我只注意到,在N3291的改變被標註爲(5.2.1下標[expr.sub]):C++ 0x:爲什麼禁止在「operator []」中使用「braced-init-list」?
之前,這是確定超載operator[]
新支撐-初始化列表:
struct X {
Z operator[](std::initializer_list<int>);
};
X x;
x[{1,2,3}] = 7; // OK: meaning x.operator[]({1,2,3})
現在是刪除,取而代之的:
一個支撐,初始化列表不得與內置的下標操作符一起使用。
問題是什麼?
我看到'x [{1,2,3}]'的第一反應是「呃,什麼......」。也許這就是原因。這基本上創建了一個'operator []',它有一個不尋常的語法和一些未知數量的參數(它在概念上對'operator []'是有意義的取1,2,3還是755的索引?)。而且,它只是困惑你:P – Damon
不,我剛剛發現它:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3236.html#798 - 他們只是移動它因爲這是一個奇怪的地方。 – towi