On 7/14/21 9:13 AM, Tejas wrote:
> ref/*notice this ref*/ int opIndex(int index)return/*NOTICE THE
> RETURN*/ {
Indeed... I cover that 'ref' here:
http://ddili.org/ders/d.en/operator_overloading.html#ix_operator_overloading.return%20type,%20operator
Two quotes from that section:
1) "it is advisable to observe the return type of the same operator on
fundamental types."
NOTE: I agree that for that to make sense, one needs to know the "return
type" of fundamental type operations. It may not be clear that ++i is a
reference to 'i' ("i itself"):
void main() {
int i;
++i = 42;
assert(i == 42);
}
2) "With the exception of opAssign, it is recommended that the operators
that modify the object return the object itself. [...] The return type
is the type of the struct, marked by the ref keyword to mean reference."
Ali