Недавно узнал, что можно делать так:
Код:
template<class T> base{...}; //базовый класс
class derived : public base<derived> {...}; //производный класс
Интересно, что делает компилятор с этим кодом при создании объекта типа derived? Он сперва создает ту часть derived, которая не наследуется от base, а затем каким-то образом создает по шаблону описание base, потом ухитряется наследовать члены base? Или же умудряется генерировать описание base, не имея под рукой конкретного описания derived?