c – 模板模板参数的部分特化,具有不同数量的参数

如果标题没有意义,这就是问题的要点:

template <template <class> class ContainerOf>
class Foo;

template <>
class Foo<boost::optional> // works!
{
    // ...
};

// ERROR! std::vector takes two parameters
// T and Alloc.
template <>
class Foo<std::vector> 
{
    // ...
};

在本质上,我想专注于各种模板,它们采用单一类型参数.但是,STL和其他地方的许多模板都有其他参数,例如Allocators和Compare操作(例如std :: map).我不关心那些.我想专注于一个带有“洞”的std :: vector,其中T是.

思考?我觉得我需要某种包装器对象,或某种间接来实现这一点 – 它也可能会改变用户实例化这些模板的方式.

最佳答案 在C 11中,您可以使用可变参数:

template <template<typename T, typename...> class ContainerOf> 
class Foo;
点赞