DMD 1.035 and 2.019 releases

Pablo Ripolles in-call at gmx.net
Wed Sep 3 17:18:53 PDT 2008


Walter Bright Wrote:

> Jarrett Billingsley wrote:
> > Speaking of syntactical ambiguity, the expression
> > 
> > S(1, 2, 3)
> > 
> > can, right now, have one of three meanings:
> > 
> > 1. A struct literal for struct S
> > 2. A call to S's static opCall
> > 3. An instantiation of S and a call to its ctor
> > 
> > Even if opCall goes away, we'll still be left with the ambiguity of 
> > struct literal vs. ctor.  I'd really, really like to hear Walter's view 
> > on this but he has responded neither to the thread I posted on 
> > digitalmars.D nor the bugzilla ticket 
> > (http://d.puremagic.com/issues/show_bug.cgi?id=2170).
> 
> If there's any constructor defined for S, then S(args) is a constructor 
> call.
> 
> If there's any opCall defined for S, then S(args) is an opCall call.

shouldn't this be so only for the static opCall's?

shouldn't this be possible?


///////////////////////////////////////////////////////

import std.stdio;


struct Parabola
{
    float a_;

    this(float a)
    {
        a_ = a;
    }

    float opCall(float x)
    {
        return a_ * x*x;
    }
}


void main()
{
    Parabola f;
    float x, y;

    f = Parabola(1.0);
    x = 2.0;
    y = f(x);

    writefln("f(%1$s) = %2$%", x, y);
}


///////////////////////////////////////////////////////


Thanks!


> 
> Otherwise, it's a struct literal.



More information about the Digitalmars-d-announce mailing list