部分默认使用内部类型初始化模板模板参数

时间:2013-09-09 05:06:20

标签: c++ templates c++11 template-templates

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

我希望以下面的方式使用这个类(或它看起来如何正确)...

MyClass(std::list);

...以便在MyClass中container_type声明/ typedef'为:

std::list<Internal*>

这样的事情有可能吗?

1 个答案:

答案 0 :(得分:0)

您可能需要以下内容:

#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;
}

Here's您可以使用的可编辑示例。请注意,此处需要额外的typename和分配器的定义。