与模板类型推断的比较
对于花括号({val_a, val_b, val_c}
)变量,auto
推断为std::initializer_list
,而模板不会这么做。所以会有如下情况发生:
template<typename T>
void func(T param);
func({1, 2, 3}); // 编译错误,无法推断类型
auto x = {1, 2, 3}; // x 的类型是 std::initializer_list<int>
其他情况下,auto
与模板类型推断一致,请参考理解模板类型推断
auto
被当做模板进行类型推断的情况(C++14)
auto
作为函数的返回类型auto
作为lamda的参数类型