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