Init
This commit is contained in:
37
cppdraft/over/sub.md
Normal file
37
cppdraft/over/sub.md
Normal file
@@ -0,0 +1,37 @@
|
||||
[over.sub]
|
||||
|
||||
# 12 Overloading [[over]](./#over)
|
||||
|
||||
## 12.4 Overloaded operators [[over.oper]](over.oper#over.sub)
|
||||
|
||||
### 12.4.5 Subscripting [over.sub]
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/overloading.tex#L3650)
|
||||
|
||||
A [*subscripting operator function*](#def:operator_function,subscripting "12.4.5 Subscripting [over.sub]") is a member function named operator[] with an arbitrary number of parameters[.](#1.sentence-1)
|
||||
|
||||
It may have default arguments[.](#1.sentence-2)
|
||||
|
||||
For an expression of the form
|
||||
|
||||
[*postfix-expression*](expr.post.general#nt:postfix-expression "7.6.1.1 General [expr.post.general]") [ [*expression-list*](expr.post.general#nt:expression-list "7.6.1.1 General [expr.post.general]")opt ]
|
||||
|
||||
the operator function
|
||||
is selected by overload resolution ([[over.match.oper]](over.match.oper "12.2.2.3 Operators in expressions"))[.](#1.sentence-3)
|
||||
|
||||
If a member function is selected,
|
||||
the expression is interpreted as
|
||||
|
||||
[*postfix-expression*](expr.post.general#nt:postfix-expression "7.6.1.1 General [expr.post.general]") . operator [] ( [*expression-list*](expr.post.general#nt:expression-list "7.6.1.1 General [expr.post.general]")opt )
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/overloading.tex#L3667)
|
||||
|
||||
[*Example [1](#example-1)*: struct X { Z operator[](std::initializer_list<int>);
|
||||
Z operator[](auto...);};
|
||||
X x;
|
||||
x[{1,2,3}] = 7; // OK, meaning x.operator[]({1,2,3}) x[1,2,3] = 7; // OK, meaning x.operator[](1,2,3)int a[10];
|
||||
a[{1,2,3}] = 7; // error: built-in subscript operator a[1,2,3] = 7; // error: built-in subscript operator â *end example*]
|
||||
Reference in New Issue
Block a user