[effective modern c++][2]理解auto類型推斷

與模板類型推斷的比較

對於花括號({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)

  1. auto作爲函數的返回類型
  2. auto作爲lamda的參數類型
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章