c++ 模板函数 拖尾返回类型

简介函数模板的返回值也可以定义为模板参数(template parameter), 但是由于无法推导(deduce), 需要显式(explicit)指定; 由于显式指定的顺序是从左至右, 返回值参数尽量放在左面,其余函数参数可以通过传入实参(argument)进行推导; 也可以提供由其他参数推导出的返回值类型, 需要使用拖尾返回类型(trailing return type); 使用decltype()函数推导, 即"编译时定义的类型", 注意使用拖尾返回类型时, 前置需要

函数模板的返回值也可以定义为模板参数(template parameter), 但是由于无法推导(deduce), 需要显式(explicit)指定;

由于显式指定的顺序是从左至右, 返回值参数尽量放在左面,其余函数参数可以通过传入实参(argument)进行推导;

也可以提供由其他参数推导出的返回值类型, 需要使用拖尾返回类型(trailing return type);

使用decltype()函数推导, 即"编译时定义的类型", 注意使用拖尾返回类型时, 前置需要"auto", 后面使用"->";

也可以使用类型转换模板(type transformation templates)修改返回值类型, 主要应用于模板元编程(template metaprogramming);

注意使用"typename"限定词, 表明是类型, 不是静态成员; 类型转换函数包含type成员, 表明类型;

本文转自:https://blog.csdn.net/caroline_wendy/article/details/17003679