template<typename T1, typename T2>
int trans(T1 func, T2&& t) {
return func(t); // 这样用的话,无论t是&,&&都会被判定为&,因为t本身是变量是左值
}
主要原因就是因为定义模板时
template<typename T1, typename T2>
int trans(T1 func, T2&& t) {
return func(std::forward<T2>(t));
}
template<typename T1, typename T2>
int trans(T1 func, T2&& t) {
return func(t); // 这样用的话,无论t是&,&&都会被判定为&,因为t本身是变量是左值
}
主要原因就是因为定义模板时
template<typename T1, typename T2>
int trans(T1 func, T2&& t) {
return func(std::forward<T2>(t));
}