Как можно извлечь класс шаблона с шаблонным типом из boost :: enable_shared_from_this?
template<template<class T> class Container>
class Myclass : public boost::enable_shared_from_this<?> {
};
Это не компилируется:
template<template<class T> class Container>
class Myclass : public boost::enable_shared_from_this<Myclass<Container<T> > > {
};
Ошибка: «Myclass» не является типом шаблона.
Так как ваш класс основан на параметре шаблона шаблона — вы должны просто использовать Containter
,
template<template<class> class Container>
class Myclass : public boost::enable_shared_from_this<Myclass<Container> >
{
};
Обычно вы используете boost::enable_shared_from_this
следующим образом
class Myclass
: public boost::enable_shared_from_this<Myclass>
{
// ...
};
Если у вас есть шаблон, это изменится на
template<class T>
class Myclass
: public boost::enable_shared_from_this<Myclass<T> >
{
// ...
};
куда Myclass<T>
это тип, который вы бы использовали для объявления в другом контексте. Вы должны написать полное имя класса с аргументами шаблона. Краткая форма MyClass
допускается только внутри определения.
И для параметров шаблона шаблона вы должны использовать
template<template<class> class T>
class Myclass
: public boost::enable_shared_from_this<Myclass<T> >
{
// ...
};
Который является ответом ForEveRs.