C++ Primer 5th笔记(chap 16 模板和泛型编程)函数模板显式实参
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 16 模板和泛型编程)函数模板显式实参相关的知识,希望对你有一定的参考价值。
1. 显式模板实参 explicit template argument
在某些情况下, 编译器无法推断出模板实参的类型。 希望允许用户控制模板实例化
- 编译器无法推断 T1, 它未出现在函数参教列表中,需要显式指定
template <typename Tl, typename T2, typename T3> T1 sum (T2, T3 ) ;
auto val3 = sum<long long> (i , lng); // long long sum (int, long)//OK
- 糟糕的设计: 用户必须指定所有三个模板参数
template <typename Tl, typename T2, typename T3> T3 alternative_sum ( T2, Tl);
// 错误: 不能推断前几个模板参教
auto val3 = alternative_sum<long long> (i, lng);
/ / 正确: 显式指定了所有三个参数
auto val2 = alternative_sum<long long, int, long> (i, lng);
1.1 正常类型转换应用于显式指定的实参
对于用普通类型定义的函数参数, 允许进行正常的类型转换
long lng;
compare (lng, 1024 );// 错误: 模板参数不匹配
compare<long> (lng, 1024 )//正确: 实例化 compare (long, long)
compare<int> (lng, 1024 ) ;// 正确: 实例化 compare (int, int )
以上是关于C++ Primer 5th笔记(chap 16 模板和泛型编程)函数模板显式实参的主要内容,如果未能解决你的问题,请参考以下文章
C++ Primer 5th笔记(chap 16 模板和泛型编程)std::move
C++ Primer 5th笔记(chap 16 模板和泛型编程)模板特例化
C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化
C++ Primer 5th笔记(chap 16 模板和泛型编程)实例化