#include #include //类模板 //一个最基本的类模板 template class stack { }; //类模板的特化,即设定当模板参数为某些类型的时候的操作 //其中的每一个函数都将不是模板函数,即非泛型函数 template<> class stack { }; template //别名模板 using void_t = void; //偏特化 template //带默认参数的主模板 struct check :public std::false_type {}; template //注意这是原函数模板的偏特化,所以允许出现另一个参数 struct check() / std::declval())>> :public std::true_type { }; //类的模板推导 //C++中要求能模板推导的类的默认构造函数是可用的 //这样将能够使用类的类型推导 template class stack { stack() = default; stack(T) {} }; //但是推导会出现新的问题 template class stack { stack(const char*)->stack; //推导指引,当出现const char* 的时候推导为std::string };