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 模板和泛型编程)定义

C++ Primer 5th笔记(chap 16 模板和泛型编程)模板特例化

C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化

C++ Primer 5th笔记(chap 16 模板和泛型编程)实例化

C++ Primer 5th笔记(chap 16 模板和泛型编程)可变参数模板

C++ Primer 5th笔记(chap 16 模板和泛型编程)模板实参