2

我刚刚注意到,在 N3291 中标记了一个更改(5.2.1 Subscripting [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})

现在将其删除并替换为:

括号初始化列表不应与内置下标运算符一起使用。

出了什么问题?

4

2 回答 2

9

x[{1,2,3}]不是内置[]运算符。它调用用户定义的运算符函数。所以深吸一口气,继续使用这个有趣的语法。

于 2011-07-18T16:22:11.353 回答
2

一些仔细的谷歌搜索将我指向issue 798,他们只其移至13.5.5 [over.sub],而不是删除它。

于 2011-07-18T15:03:22.497 回答