02 理解auto类型推导
02 理解auto类型推导
auto
的类型推导,与条款1的类型推导几乎一致。例如:
auto x = 27; // 情况3(x既不是指针也不是引用) |
唯一的例外——大括号初始化
唯一的例外在于,用大括号初始化会导致出现initializer_list
的存在。
auto x1 = 27; // 类型时int,值是27 |
但是,这仅在声明变量时有效,而以下场景却无效:
-
返回值auto推导:
-
auto createInitList() { return { 1, 2, 3 }; // 编译错误:不能推导出{ 1, 2, 3 }的类型 }
* lambda里函数参数auto推导
* ```C++
std::vector<int> v;
// ...
auto resetV = [&v](const auto& newValue) { v = newValue; } // C++14
// ...
resetV({ 1, 2, 3 }); // 编译错误,不能推导出{ 1, 2, 3 }的类型
-
发布于