我已经开始学习C ++,目前我正在尝试使用模板,所以,如果我的措辞不是100%准确的,请多多包涵。
我正在使用以下文献:
第一本书看一下下面的模板函数
template<typename T1, typename T2>
auto max(T1 a, T2 b) -> decltype(b<a?a:b) {
return b < a ? a : b;
}
Run Code Online (Sandbox Code Playgroud)
并指出,这个定义有一个缺点,因为T1或者T2可能是一个参考,因此,返回类型可以是引用类型。
但是,第二本书指出,如果ParamType在我们的情况下T1,T2既不是指针也不是引用(对于我们的情况而言如此),则调用表达式的引用部分将被忽略。
举例说明
template<typename T>
void f(T param);
int x = 27; // as before
const int cx = x; // as before
const int& rx = x; // as before
f(x); // T's and param's types …Run Code Online (Sandbox Code Playgroud) c++ templates reference decltype template-argument-deduction