[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