Начал читать Александреску, и наткнулся на следующий код в начале книги:
template<
class T
, template<class> class CheckingPolicy
, template<class> class ThreadingModel
, template<class> class Storage = DefaultSmartPtrStorage
>
class SmartPtr :
public CheckingPolicy<T>
, public ThreadingModel<SmartPtr> {
public:
T *operator-> ( ) {
typename ThreadingModel<SmartPtr>::Lock guard( *this );
CheckingPolicy<T>::Check( mPoint );
return mPoint;
}
private:
T *mPoint;
};
Пытаясь разобраться как это работает, вбил это дело в свою ide и получил следующую семантическую ошибку:
error: use of class template 'SmartPtr' requires template arguments
note: template is declared here
на строку
, public ThreadingModel<SmartPtr> {
Что мне пытаются сказать я понимаю, однако не могу понять, это косяк книги, или же я допустил какую то ошибку?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости