Is this a operator overloading bug?

Bill Baxter dnewsgroup at billbaxter.com
Wed Jan 10 23:33:49 PST 2007


Yikes. That looks to me like it might be a bug introduced by the Named 
Return Value Optimization implemented in DMD 0.178.
   http://www.digitalmars.com/d/glossary.html#nrvo


--bb

Tim Fang wrote:
>     I am very new to D and I am trying to implement a Vector3 struct, please 
> take a look at the code below, why the output is "nananan"? I use dmd 1.00.
> 
> --code---------------------
> import std.stdio;
> 
> void main()
> {
>  Vector3 a;
>  a.set(1,1,1);
>  a = a*2;
>  writefln(a.x, a.y, a.z);
> }
> 
> 
> struct Vector3
> {
>  float x,y,z;
> 
>  // constructor
>  void set(float _x, float _y, float _z)
>  {
>   x = _x;
>   y = _y;
>   z = _z;
>  }
> 
>  Vector3 opMul(float s)
>  {
>   Vector3 ret;
>   ret.x = x*s;
>   ret.y = y*s;
>   ret.z = z*s;
>   return ret;
>  }
> } 
> 
> 



More information about the Digitalmars-d mailing list