It may have default arguments
. For an expression of the form
the operator function
is selected by overload resolution (
[over.match.oper])
. If a member function is selected,
the expression is interpreted as
[
Example 1:
struct X {
Z operator[](std::initializer_list<int>);
Z operator[](auto.);
};
X x;
x[{1,2,3}] = 7;
x[1,2,3] = 7;
int a[10];
a[{1,2,3}] = 7;
a[1,2,3] = 7;
—
end example]