Люблю искать решения на нетривиальные задачи, думаю и вам тоже понравится. Чтобы найти загвоздку в следующем примере, недостаточно поверхностных знаний C++. Программисты умудренные опытом наоборот, смогут с легкостью дать ответ. Итак, не буду томить... :)
Пусть есть класс со статической переменной:
class ClassWithStaticVar
{
public:
static int StaticVar;
};
int ClassWithStaticVar::StaticVar;
Обратите внимание на определение статической переменной — все верно. Усложняем класс — добавляем собственное определение типа:class ClassWithStaticVar
{
public:
typedef int MyOwnType;
static MyOwnType StaticVar;
};
ClassWithStaticVar::MyOwnType ClassWithStaticVar::StaticVar;
Опять обращаем внимание на определение статической переменной — все верно. А теперь вопрос: как определить все ту же переменную для шаблонного класса? Смотрите пример:template <class T>
class ClassWithStaticVar
{
public:
typedef int MyOwnType;
static MyOwnType StaticVar;
};
template <class T>
ClassWithStaticVar<T>::MyOwnType ClassWithStaticVar<T>::StaticVar; //!! Ошибка времени компиляции
UPD. Задачка действительно не очень трудная, и первым правильно ответил Lazin :)

