-1
Я ожидаю, что он ниже код, чтобы дать ошибку, но Compiles okПочему частная функция-член подкласса, вызываемого из родительского класса?
class B;
template<typename T>
class A
{
private:
A()
{
T b;
b.print();
}
void print()
{
}
};
class B: public A<B>
{
};
Как A
с возможностью доступа к закрытым членам, конструктор A()
и print()
из B
?
Вы видели свою ссылку _'Compiles ok'_? – P0W
Это потому, что вы не создаете экземпляр класса шаблона. Вы не можете генерировать ошибку компилятора в A до тех пор, пока вы не заставите ее генерировать код для A с определенной версией 'T'. –
Вы ДОЛЖНЫ ВИДЕТЬ [Скомпилировать ok] (http://ideone.com/6Gc4wR). Он НЕ компилируется ВСЕ. – Nawaz