C++ Primer 5th笔记(chap 16 模板和泛型编程)函数指针和实参推断

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 16 模板和泛型编程)函数指针和实参推断相关的知识,希望对你有一定的参考价值。

1. 当用一个函数模板初始化一个函数指针或为一个函数指针赋值时, 编译器使用指针的类型来推断模板实参

template ctypename T> int compare (const T &, const T& );

// pfl 指向实例 int compare (const int &, const int & )
int (*pf1) (const int&, const int& ) = compare;

1.1 如果不能从函数指针类型确定模板实参, 则产生错误:

/ / func 的重栽版本; 每个版本接受一个不同的函数指针类型
void func (int ( * ) (const strings, const strings ) );
void func (int (*) (const int &, const int & ) );
func (compare); / / 错误: 使用 compare 的哪个实例?

1.2 解决方法: 通过使用显式模板实参来消除 func 调用的歧义

如下表达式调用的 func 版本接受一个函数指针, 该指针指向的函数接受两个 const int &参数

// 正确: 显式指出实例化哪个 compare 版本
func (compare<int>); // 传递 compare (const int&, const 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 模板和泛型编程)实例化

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

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