跳转至

C++模板

Abstract

hello

Info

hello

test

函数模板

函数模板不是函数,只有实例化[2]函数模板,编译器才能生成实际的函数定义。不过在很多时候,它看起来就像普通函数一样

定义模板

1
2
3
4
template<typename T>
T max(T a,T b){
    return a > b ? a : b;
}

可变参数模板

可变参数模板是 C++11 引入的一项强大特性,使得函数模板和类模板能够接受任意数量的模板参数。

对于下面的需求:

实现函数 sum,支持 sum(1,2,3.5,x,n...) 即函数 sum 支持任意类型,任意个数的参数进行调用,你应该如何实现?

1
2
3
4
5
// Args... 是一个模板参数包(parameter pack),它表示零个或多个类型参数
template<typename...Args>

// args... 是对应的函数参数包,表示传入的函数参数
void sum(Args...args){}

模板类型推导