条款2 理解auto类型的推导
目录
一、万能引用的第二种写法
二、{}的auto类型推导
三、{}的模版类型推导
四、C++14,auto作为函数返回值,但推导规则遵循模版推导规则
一、万能引用的第二种写法
// 第一种写法
class A(){}
A &&;
// 第二种写法
auto &&
二、{}的auto类型推导
//以下写法auto推导为int
auto x = 27;
auto x(27);
auto x{27};
// auto推导为initialize_list<int>
auto x = {27};
// 下面是错误写法
auto x = {5, 8.0}; // 缩窄错误
auto x{5,7}; // 错误
三、{}的模版类型推导
template<typename T>
void f(T param) {}
f({11, 23, 9}); // 错误
template<typename T>
void f(std::initializer_list<T> param) {}
f({11, 23, 9}); // 正确
四、C++14,auto作为函数返回值,但推导规则遵循模版推导规则
🙅♂️不能把T推导为initialize_list
auto createInitializeList( return {1, 2, 3}) // 错误