Частично по умолчанию инициализировать параметры шаблона шаблона с внутренним типом

template <template <typename> class container_type>
class MyClass
{
class Internal{
};
};

Я хочу использовать этот класс (или как он будет выглядеть правильно) следующим образом …

MyClass(std::list);

…так что в MyClass container_type объявлен /typedefкак:

std::list<Internal*>

Возможно ли что-то подобное?

3

Решение

Вы, вероятно, хотите что-то вроде следующего:

#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 и определение распределителя требуется здесь.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]