我刚注意到,在N3291中标记了一个更改( 5.2.1 Subscripting [expr.sub] ):
之前,可以使用新的 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})
现在删除并替换:
braced-init-list不能与内置的下标运算符一起使用。
问题是什么?
答案 0 :(得分:9)
x[{1,2,3}]
不是内置的[]
运算符。它调用用户定义的操作符函数。所以深吸一口气,继续使用这个有趣的语法。
答案 1 :(得分:2)
一些小心的谷歌搜索指向issue 798,他们只将移动到 13.5.5 [over.sub] ,而不是已删除 it。