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;
}
Here's一个你可以玩的可编译的例子。请注意,此处需要额外的 typename
和分配器的定义。
关于c++ - 部分默认使用内部类型初始化模板模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691785/