函数模版

C++模版:偏特化和函数模版的小技巧

戏子无情 提交于 2020-05-04 02:17:35
偏特化就是部分特化。 利用模版的偏特化,可以实现一些类型过滤。 比如,我想让一个类模版指定类型如int能编译过,其他编译不过,代码实现如下: template <typename T> class A; template<> class A<int> { }; int main() { A<int> a; A<double> b; //error return 0; } 以上代码,通用的模版没有实现,只实现了int的特化模版,这样class A就只接受int类型的模版形参了。 同理,我们也能实现让指定类型如int不能编译过,其他都能编译过,代码如下: template <typename T> class A {}; template<> class A<int>; int main() { A<int> a; //error A<double> b; return 0; } 函数模版比类模版多了一个参数传入的过程,所以可以省略模版参数,因为可以从传入的参数推导。比如: #include<iostream> using namespace std; template< typename T> int func(T a, T b) { cout << a + b << endl; return a + b; } int main() { func<int>(3, 4); func(3