#include <iostream>template <typename F>struct foo{ typedef F value_type;};template <typename G>struct bar{};//template<> <- works if commented out or nottemplate <typename F>struct bar<foo<F> >{ typename foo<F>::value_type val;};int main(voID){ typedef foo<int> F; typedef bar<F> B; B b; b.val = 10; std::cout << b.val << std::endl; return 0;};
所以我的问题是,它真的是可选的吗?我的印象是,对于这种专业化,模板<>线是必需的..
解决方法 那条线不应该在那里.在进行完全专业化时,有模板<>这是强制性的.在进行部分特化时,将部分特化的参数放在这些尖括号中,并且没有其他模板关键字.
所以完全专业化是:
template <>struct bar<qyzzy>
部分专业化是:
template <typename F>struct bar<foo<F> >
每个都有一个模板关键字和两对尖括号.
总结以上是内存溢出为你收集整理的c – 使用另一个类模板专门化类模板时,`template <>`是可选的吗?全部内容,希望文章能够帮你解决c – 使用另一个类模板专门化类模板时,`template <>`是可选的吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)