__traits(getDelegate, ...)
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Sun Feb 3 21:20:22 PST 2013
On 2/4/13 12:14 AM, Steven Schveighoffer wrote:
> I wanted to put forth again a proposal I had for getting a delegate to
> an overloaded function. Only because I think it's relevant to the latest
> property debate.
>
> When getting the address of a delegate, it's as simple as:
>
> struct S
> {
> void foo(int x) {}
> }
>
> S s;
> auto dg = &s.foo; // delegate obtained
>
> However, if foo is overloaded, this becomes more complex:
>
> struct S
> {
> void foo(int x) {}
> void foo(string s) {}
> }
>
> S s;
> auto dg = &s.foo; // which one? Compiler chooses!
>
> Turns out, it's somewhat possible to specify, but it can be
> painful/uintuitive:
>
> auto dg = cast(void delegate(string))&s.foo; // oops, what if I use the
> wrong delegate signature, or S.foo is changed later!
void delegate(string) dg = &s.foo;
Andrei
More information about the Digitalmars-d
mailing list