An issue with lazy delegates

Stewart Gordon smjg_1998 at
Mon Jan 9 05:33:52 PST 2012

On 05/01/2012 05:26, Andrej Mitrovic wrote:
> The first call doesn't do anything because the delegate is wrapped
> inside of another delegate. I want this template to be versatile
> enough to be used by both lazy expressions and delegate literals, but
> I don't know how.

If you have a delegate you want to use as a lazy expression, you can make the lazy 
argument a call to it

     onFailThrow!Exception({ to!int(x); }());

Of course, Peter's solution enables you to omit the () and just pass the delegate in, but 
it does mean that you can't lazily evaluate an expression to a delegate, unless you wrap 
it in a delegate literal.


More information about the Digitalmars-d-learn mailing list