RHS 上的運算子重載和初始化器清單
在C 程式設計中,初始化器清單是一種簡潔的語法,用於使用表達式列表初始化聚合物件。雖然初始化列表可以在各種場景中方便地使用,但它們在運算符右側 (RHS) 的使用一直是一個討論點。
為什麼初始化列表在RHS 上受到限制
C 11 不允許在運算符的RHS 上列出初始值設定項列表,包括二元運算符
初始化器列表的例外
儘管存在一般限制在運算符參數中使用初始值設定項列表,C確實定義了特定的異常,其中初始值設定項列表是接受:
在你的程式碼中,你可以使用初始化列表作為bar 建構子的參數,該構造函數在
foo baz; baz << bar{1, -2, "foo", 4, 5}; // Legal
限制原因
限制運算子RHS上的初始值設定項清單的決定源於保持一致且清晰的語法的願望。在所有上下文中允許初始化程式清單會在語言中引入額外的複雜性和潛在的歧義。
正如您問題中提到的討論文件中所指出的,考慮了允許在右側而不是左側的初始化程序列表的替代方案太有問題了。因此,選擇了僅在特定上下文中允許初始化清單的保守方法。
以上是為什麼不能在 C 運算子的右側使用初始化清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!