On 03/28/2018 12:19 AM, arturg wrote:
shouldn't it create a overload?
I don't think so. As far as I know, you can't overload on attributes. [...]
but this works: class A { void talk() {} } class B : A { alias talk = A.talk; void talk(int) {} }
Because different parameters make overloads.
this works also: class C { void talk()@system {} void talk()@safe {} }
DMD might accept that, but I don't think it works in a meaningful way. How do you call the @system one?
Looks like the @safe one will always be called, even from @system code: ---- import std.stdio; void talk() @system { writeln("@system"); } void talk() @safe { writeln("@safe"); } void main() @system { talk(); /* Prints "@safe". */ } ----