[Issue 2730] New: Restriction on op= can be lifted
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Mar 11 22:09:51 PDT 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2730
Summary: Restriction on op= can be lifted
Product: D
Version: 2.025
Platform: PC
URL: http://www.digitalmars.com/d/2.0/operatoroverloading.htm
l#Array
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: www.digitalmars.com
AssignedTo: bugzilla at digitalmars.com
ReportedBy: jlquinn at optonline.net
The section on opIndex and opIndexAssign states that op=, ++, and -- operators
can't be supported.
However, if we have:
struct S {
ref <type> opIndex(size_t idx) {...}
}
then, the following code will do what we expect
S s;
s[i] += 4;
as the += ends up calling opIndex. At least, this is what dmd 2.026 appears to
do. If the docs are adjusted accordingly, then that wart is removed.
As a side note, opIndexAssign doesn't appear necessary at all if we do things
this way. As long as opIndex is declared with ref, it can be used as lvalue
and rvalue.
--
More information about the Digitalmars-d-bugs
mailing list