Вот упрощенный пример:
template<typename T>
class MyTemplate
{
class Inner {};
Inner met();
};
template<typename T>
MyTemplate<T>::Inner MyTemplate<T>::met()
{ }
Я получаю следующую ошибку компиляции:
expected constructor, destructor, or type conversion before 'met'
Я использую GCC. Кажется, компилятор не распознает MyTemplate<T>::Inner
как правильный класс. Как я могу это исправить? Я пробовал придерживаться ключевого слова typename
здесь и там безрезультатно. Прямо сейчас, единственный способ, которым я могу скомпилировать это, - это встроить определение метода в объявление класса, которое я бы хотел избежать.