template <template <typename> class container_type>
class MyClass
{
class Internal{
};
};
Я хочу использовать этот класс (или как он будет выглядеть правильно) следующим образом …
MyClass(std::list);
…так что в MyClass container_type
объявлен /typedef
как:
std::list<Internal*>
Возможно ли что-то подобное?
Вы, вероятно, хотите что-то вроде следующего:
#include <list>
#include <memory>
template <template <typename, typename>
class Container = std::list>
class MyClass
{
class Internal
{ };
Container<Internal*, std::allocator<Internal*>> my_list;
};
int main()
{
MyClass<> m;
}
Вот компилируемый пример, с которым вы можете играть. Обратите внимание, что оба дополнительных typename
и определение распределителя требуется здесь.
Других решений пока нет …