#include <iostream>#include <utility>template<typename F,typename... T>struct Wrapper{ };template<typename T>struct is_wrapper : std::false_type {};template<typename... T>struct is_wrapper<Wrapper<T...>> : std::true_type {};//template<typename F,typename... T>//struct is_wrapper<Wrapper<F,T...>> : std::true_type {};int main(){ Wrapper<int,double> w; std::cout << is_wrapper<decltype(w)>::value << std::endl;}@H_419_4@打印0.但是,如果一个取消了中间的两行打印1. @H_419_4@为什么不总是打印1?第二部分专业化是否也不应该涵盖这一情况,这显然仅仅是由第三(评论)部分专业化所涵盖?解决方法 代码应该确实符合部分专业化;标准从来没有实际上不允许这样做,但编译器确实需要一段时间才能实现可变模板及其正确的扣除. GCC符合4.9.0,Clang为3.6. Clang的相关错误报告是 #22191(虽然我找不到GCC的). 总结
以上是内存溢出为你收集整理的c – 可变模板的部分专业化需要第一个非可变模板参数全部内容,希望文章能够帮你解决c – 可变模板的部分专业化需要第一个非可变模板参数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)