1

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

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

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

我使用“模板模板参数”来实现这一点,但是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 作为模板参数传递的类?谢谢!

4

1 回答 1

-1

您也许可以使用 c++11 和可变参数模板来做您想做的事情:

template< template<typename, typename...> class CONTAINER>
于 2013-03-07T19:54:26.897 回答