Псевдоним типа C ++ 11 хорош, и я часто его использую, но в последнее время меня интересует, почему псевдоним типа не работает так:
#include <iostream>
template<typename T>
class Y
{
public:
Y(): t( T{} ) {}
T getT() const;
private:
T t;
};
template< typename T>
using Foo = Y<T>;
template< typename T>
T Y<T>::getT() const { return t; } //FINE
/* NOT FINE!
template< typename T>
T Foo<T>::getT() const { return t; }
*/
int main()
{
Y<int> f{};
return 0;
}
Вопрос:
Если тип является псевдонимом, почему мы не можем заменить тип псевдонимом новым псевдонимом?
Задача ещё не решена.