Recursive attribute for virtual functions?
ag0aep6g
anonymous at example.com
Tue Mar 27 23:23:38 UTC 2018
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". */
}
----
More information about the Digitalmars-d
mailing list