N3291 で変更がマークされていることに気付きました ( 5.2.1 添え字 [expr.sub] ):
以前はoperator[]
、新しいbraced-init-listでオーバーロードしても問題ありませんでした:
struct X {
Z operator[](std::initializer_list<int>);
};
X x;
x[{1,2,3}] = 7; // OK: meaning x.operator[]({1,2,3})
これは削除され、次のものに置き換えられました。
ブレース初期化リストは、組み込み添え字演算子と一緒に使用してはなりません。
なにが問題だったの?