Я задаюсь вопросом, почему следующий код работает:Typedef из шаблонного класса внутри класса
template <class T>
class A {
public:
typedef A* Pointer;
typedef A<T>* OtherPointer;
};
int main()
{
A<double> a;
A<double>::Pointer b = &a;
A<double>::OtherPointer c = &a;
std::cout << b << " " << c << std::endl;
}
Синтаксис OtherPointer
выглядит логичным для меня. Мне интересно, что это за Pointer
. Является ли имя класса неявным шаблоном внутри определения класса? Если да, то почему другой синтаксис работает?
'A' и' A 'являются взаимозаменяемыми в рамках' A'. –
0x499602D2