January 19, 2008 [Issue 1792] New: illegal opAssign possible via alias | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=1792 Summary: illegal opAssign possible via alias Product: D Version: 1.025 Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: benoit@tionex.de From http://digitalmars.com/d/1.0/operatoroverloading.html The assignment operator cannot be overloaded for rvalues that can be implicitly cast to the lvalue type. Doing so results in a compiler error. But doing it via an alias, the compiler does not complain. class C{ C set( C c ){ return c; } alias set opAssign; } -- |
September 09, 2008 [Issue 1792] illegal opAssign possible via alias | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=1792 smjg@iname.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |smjg@iname.com ------- Comment #1 from smjg@iname.com 2008-09-09 16:21 ------- The compiler accepts the code, but the assignment operator doesn't actually overload: ---------- import std.stdio; class C { C set(C c) { writefln("Calling C.set"); return c; } alias set opAssign; } void main() { C d = new C; C e = new C; d = e; } ---------- generates no output on run. -- |
Copyright © 1999-2021 by the D Language Foundation