On 2/4/13 12:32 AM, Steven Schveighoffer wrote:
On Mon, 04 Feb 2013 00:20:22 -0500, Andrei Alexandrescu
<[email protected]> wrote:

On 2/4/13 12:14 AM, Steven Schveighoffer wrote:
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;

That seems, ... odd. How does the lhs dictate the rhs expression type?

Trying to think of a case where an expression is more handy than
assigning to a variable first...

Possibly this? Kind of a stretch.

void delayedCall(D)(D dg)
{
// put dg as a delegate onto a message queue to call later...
}

-Steve

This is well-trodden ground. The rule has been in C++ forever and has worked well. It's time-proven, and there is little reason to mess with what works.

Andrei

Reply via email to