以下代码
#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; }
打印0.但是,如果一个取消了中间的两行打印1.
为什么不总是打印1?第二部分专业化是否也不应该涵盖这一情况,这显然仅仅是由第三(评论)部分专业化所涵盖?