Шаблоны и определение методов вне класса

Без предисловий и воды. Вот код и он не работает.

template<class T>
class Foo{
private:
    template <typename Y>
    T bar(Y a) const;
};

template<class T, typename Y>
T Foo<T>::bar<Y>(Y a) const // <--  Ошибка тут
{
    return a;
} 

Что такое и как исправить?


Ответы (1 шт):

Автор решения: NunOfIt

Так:

template<class T>
class Foo{
private:
    template <typename Y>
    T bar(Y a) const;
};

template<class T>
template<typename Y>
T Foo<T>::bar(Y a) const {
    return a;
}
→ Ссылка