與模板類型推斷的比較
對於花括號({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的參數類型