return type and templates

Jonathan M Davis jmdavisProg at gmx.com
Fri Nov 22 07:29:39 PST 2013


On Friday, November 22, 2013 16:21:43 Timon Gehr wrote:
> On 11/22/2013 04:14 PM, Jonathan M Davis wrote:
> > On Friday, November 22, 2013 15:20:30 Timon Gehr wrote:
> >> On 11/22/2013 02:50 PM, Dicebot wrote:
> >>> On Friday, 22 November 2013 at 13:43:49 UTC, Andrea Fontana wrote:
> >>>> I assumed that it knows - when is trying to instatiate s.value
> >>>> template - that "s.value" is part of an assignment and that it will be
> >>>> assigned to an int.
> >>> 
> >>> This is somewhat wrong part. "s.value" is distinct separate expression
> >>> that must be evaluated by compiler on its own before proceeding. The
> >>> fact that it is later used in assignment expression is not know at that
> >>> moment.
> >> 
> >> Lambda parameter type deduction needs to know this too.
> > 
> > I believe that the only cases where the compiler uses the left-hand side
> > of of an assignment or initialization to determine anything about the
> > type of the right-hand side is when the right-hand side is a literal (be
> > it a lambda literal, array literal, or some other kind of literal).
> > 
> > - Jonathan M Davis
> 
> int delegate(int) dg = b?x=>x:x=>2*x;

Yeah. The result of the right-hand side is a lambda literal.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list