模板函数使用默认参数
时间: 2024-02-21 15:50:14 浏览: 125
深入解析C++中的函数模板和函数的默认参数
5星 · 资源好评率100%
函数模板使用默认参数的规则是,如果能够从函数实参中推导出类型,则不会使用默认模板参数;反之,如果无法推导出类型,则会使用默认模板参数。例如,给定函数模板Foo:
```
template<typename T1, typename T2 = double>
void Foo(T1 t = 0, T2 b = 0) {};
```
- 调用Foo(1, 'c')将实例化为Foo<int, char>(1, 'c'),不使用默认模板参数;
- 调用Foo(1)将实例化为Foo<int, double>(1, 0),使用了默认模板参数double;
- 调用Foo()将报错,因为无法推导出模板参数;
- 调用Foo<int>()将实例化为Foo<int, double>(0, 0),使用了默认模板参数double;
- 调用Foo<int, char>()将实例化为Foo<int, char>(0, 0),不使用默认模板参数。
阅读全文