このページはC++20に採用された言語機能の変更を解説しています。
のちのC++規格でさらに変更される場合があるため関連項目を参照してください。
概要
多次元配列クラスを設計する場合などで、単一の引数しかとれない添字演算子にar[x, y]
のようにカンマ演算子をオーバーロードして複数のインデックスを指定できるようにすることがあった。
しかしこのようなハックは、将来的に添字演算子に複数引数をとれるようにする際に障害となってしまうため、添字演算子内でのカンマ演算子の使用を非推奨化する。
ar[x] // C++17:OK, C++20:OK
ar[(x, y)] // C++17:OK, C++20:OK
ar[x, y] // C++17:OK, C++20:非推奨
既存のカンマ演算子をオーバーロードしたコードを使用する場合は、丸カッコで囲むこと。