雖然我讀92頁的C++ 11個標準,在此期間,它說,這是ellegal供您使用的支撐,初始化列表在此5.1.2 $ case: auto x = [] {return {1,2}}; //錯誤:一個支撐,初始化列表不是表達式爲什麼一個支撐,初始化列表不是表達式?
,我發現這兩個話題,一個從標準和N3681提案等。
Page397 $ 14.8.2.5:一個初始化列表參數會導致參數被視爲非推斷上下文。 和$ 7.6.1.4:使用一個新的發明類型模板參數U或,更換汽車的出現,如果初始化是一個支撐,初始化列表(8.5.4),用的std :: initializer_list。
雖然N3691提議建議「更改一個大括號初始化自動不推演到一個初始化列表,並禁止括號初始化汽車的情況下,其中支撐初始化具有多個元素」,它說「返回一個支撐列表將無法正常工作,因爲它不是一個表達式」 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3681.html
但是,我沒能找到‘爲什麼一個支撐,初始化列表不是體現在哪裏?’這可能有這個話題的相同含義: Why can't we have automatically deduced return types? 但有一點差異,而他試圖理解爲什麼C++ commitee斷定這種語法是毫無價值的。所以這一定有一個特別的原因嗎?非常感謝。
不夠公平,但它不IMO回答這個問題。第一部分(「LHS不允許」)適用於和VAR(這是在語法中的表達式)的第二部分,並說基本上是「它不是一個表達式(在語法),因爲我們決定不讓它在語法中的表達式執行第一部分的手段」(可以其他方式強制執行)。 – greggo