當使用陣列作為一個 auto
(參見 2.5.2節,第61頁)變數的初始值時,推斷得到的型別是指標而非陣列:
int ia[]= {0,1,2,3,4,5,6,7,8,9}; // ia是一個含有10 個整數的陣列
auto ia2(ia); // ia2 是一個整型指標,指向 ia 的第一個元素
ia2 = 42; // 錯誤:ia2是一個指標,不能用int值給指標賦值
當使用 decltype
關鍵字(參見 2.5.3 節,第 62 頁)時上述轉換不會發生,decltype(ia) 返回的型別是由10個整數構成的陣列:
decltype(ia) ia3={0,1,2,3,4,5,6,7,8,9}; // ia3是一個含有10個整數的陣列
ia3 = p; // 錯誤:不能用整型指標給陣列賦值
ia3[4]= i; // 正確:把i的值賦給 ia3 的一個元素
《C++ Primer》 P105