Не удается скомпилировать следующее (в любом случае, с gcc 4.2.1 в Linux):
template< typename T >
class Foo
{
public:
typedef int FooType;
};
void
ordinary()
{
Foo< int >::FooType bar = 0;
}
template< typename T >
void
templated()
{
Foo< T >::FooType bar = T( 0 );
}
int main( int argc, char **argv )
{
return 0;
}
Проблема с этой строкой:
Foo< T >::FooType bar = 0;
... и компилятор подал жалобу:
foo.c: В функции ‘void templated ()’:
foo.c: 22: ошибка: ожидается `; ' до "бара"
Обычно это можно увидеть, когда тип еще не объявлен, но, насколько я могу судить, Foo :: FooType должен быть полностью допустимым внутри templated ().