我试图专门针对特定类型的可变参数模板类。
我正在努力实现这一目标:
template<typename... Ts>
class myclass
{
///...
};
template<>
class myclass<int... N>
{
///...
};
我得到这个错误:
error C2760: syntax error: unexpected token 'int', expected 'expression'
error C2187: syntax error: '...' was unexpected here
error C2065: 'N': undeclared identifier
error C2913: explicit specialization; 'ex::vec' is not a specialization of a class templa
任何人都可以暗示我在做什么错吗?
您myclass
声明了模板参数的可变列表
template<typename... Ts>
class myclass
您可以针对问题中的特定类型(而不是特定值)进行专业化处理(已针对语法进行了更正,但对于类型/值问题仍然是错误的)
template <int N>
class myclass<N...>
如果您将值作为类的模板参数,则有所不同,例如
template <typename ... Ts>
class myclass
{ };
template <template <int...> class C, int ... Is>
class myclass<C<Is...>>
{ };
// ...
template <int ...>
class foo
{ };
// ...
myclass<foo<0, 1, 2>> m0; // uses specialization
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句