c – 可变结构规范
发布时间:2020-12-16 09:54:21 所属栏目:百科 来源:网络整理
导读:我像这样定义一个可变结构 template class T,class... TReststruct Opa{ Opa() { std::cout "Mutiple-arguments template"; }}; 并希望专门针对具有1个参数的情况进行专门化,如下所示 template struct Opaclass T{ Opa() { std::cout "One-argument template
我像这样定义一个可变结构
template <class T,class... TRest> struct Opa { Opa() { std::cout << "Mutiple-arguments template"; } }; 并希望专门针对具有1个参数的情况进行专门化,如下所示 template <> struct Opa<class T> { Opa() { std::cout << "One-argument template"; } }; 但编译器只是忽略了第二个结构,而输出来自 Opa<int> opa; Opa<int,int> opa_opa; 是多参数模板,多参数模板. 以不同方式指定单参数模板,例如 template <class T> struct Opa {...} 导致编译错误. 解决方法
您的单参数特化的语法是错误的.你可能完全专注于现场宣布的T类.你想要这个:
template <class T> struct Opa<T> { Opa() { std::cout << "One-argument template"; } }; Live example 通过在模板后的尖括号中列出部分特化的参数(在您的情况下,单个类型参数,类T),并在主模板名称后的尖括号中列出主模板的参数来声明部分特化(在您的情况下,T). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |