Использование typedefs из шаблонного класса в шаблонной функции (не являющейся членом)
-
19-09-2019 - |
Вопрос
Следующее не удается скомпилировать (во всяком случае, с 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()’:
фу.с:22:ошибка:ожидаемый `;' перед ‘bar’
Обычно это видно, когда тип не был объявлен, но, насколько я могу судить, Foo< T >::FooType должен быть абсолютно корректным внутри templated() .
Решение
Не связан с StackOverflow