STL容器上的模板模板参数

时间:2012-12-08 07:37:21

标签: c++ templates

我想实现一个使用不同键值容器的包装类,例如map,unordered_map。

我希望用户可以像这样使用代码:

MyWrapper<std::map> w1;
MyWrapper<std::tr1::unordered_map> w2;

我使用&#34;模板模板参数&#34; 来实现这一目标, 但是map和unordered_map的模板参数是不同 ..

// but this Wrapper is for std::map only....
template< template<typename,typename,typename,typename> class CONTAINER>
class MyWrapper
{
     CONTAINER<string, string,
            std::less<string>,
            std::allocator<std::pair<const string, string> > > c_;
};

MyWrapper<std::map> w1;
MyWrapper<std::tr1::unordered_map> w1; // not compiled!!!

有没有办法让一个可以将map或unordered_map作为模板参数传递的类? 谢谢!

1 个答案:

答案 0 :(得分:-1)

您可以使用c ++ 11和可变参数模板来执行您想要的操作:

template< template<typename, typename...> class CONTAINER>