[英]Why does []mutable{} not compile?
這編譯:
[]{};
這也是:
[]() mutable {};
但是使用這段代碼,編譯器會向我拋出錯誤消息:
[] mutable {};
^~~~~~~
error: lambda requires '()' before 'mutable'
有什么特別的理由嗎?
這只是語法在標准中編寫方式的結果。 我不知道這是否是一種疏忽。
lambda表達式以lambda導入器(括號)開頭,后跟可選的lambda聲明符。
lambda聲明符包含參數列表,mutable,attributes,exception specifier和return type。 除參數列表外,所有這些都是可選的。 因此,如果存在lambda聲明符,則括號必須在那里。
這就是為什么你不僅可以擁有mutable關鍵字。
展望5.1.2 [expr.prim.lambda]在n4296 (這是C ++ 14的最終草案),這只是它落在了語法的方式。 mutable
只能在lambda聲明器中使用 - 包括括號。 整個lambda聲明符是可選的(這就是為什么你可以省略括號)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.