如果标题没有意义,则是问题的要点:
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和其他地方的许多模板具有其他参数,例如分配器和比较操作(例如std :: map)。我不在乎那些。我想专门研究带有t的“孔”的std :: vector。
有什么想法吗?我觉得我需要某种包装对象或某种间接方法来实现此目的-它也可能会改变用户实例化这些模板的方式。
在C ++ 11中,您可以使用variadics:
template <template<typename T, typename...> class ContainerOf>
class Foo;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句