auto类型推导
推导规则
auto类型推导和模板类型大致相同,分为三种类型
写了这么久C++都没思考过模板推导的相关内容,这次学习Effective Modern C++记录一下
已知模板函数:1
2
3
4template<typename T>
void f(ParamType param);
f(expr); //使用表达式调用f
在编译期间,编译器使用expr
进行两个类型推导:一个是针对T
的,另一个是针对ParamType
的。这两个类型通常是不同的,因为ParamType
包含一些修饰,比如const
和引用修饰符
如:1
2template<typename T>
void f(const T& param); //ParamType是const T&
所以根据ParamType
的类型存在三种情况: