Составил небольшой пример. Компилятор не может найти тип ref как возвращаемое значение метода getA() . Почему это происходит? И как тогда лучше писать? Спасибо.
template<class T>
class A
{
T a;
public:
using ref = const T&;
ref getA()const;
};
template<class T>
A<T>::ref A<T>::getA() const
{
return a;
}
В данном случае без указания typename компилятор воспринимает зависимое имя ref не как имя типа. Однако использовать typename в данном случае совсем не обязательно, так как это имя может быть найдено в контексте этого класса. Проще и короче будет использовать хвостовой синтаксис для возвращаемого значения, это также позволит избавиться от A<T>::.
template<class T>
class A
{
T a;
public:
using ref = const T&;
ref getA()const;
};
template<class T> auto
A<T>::getA() const -> ref
{
return a;
}
Продвижение своими сайтами как стратегия роста и независимости