Hello everybody!

I'm trying to use some function FN like this:

struct X
{
 protected double _x;  // double type for example
 public @property double X() const { return _x; }

 // ctor
 public this(double x) { _x = x; } // double type for example

 void FN(ref const(double) in_x) // double type for example
 {
   // ... do some operations with _x
 }

}

main(..)
{
 ....
 X x = X(20);

 x.FN(30); // getting an error
}


 why x.FN(20) gets me an error?
the construction "ref const(double)" or "ref immutable(double)" must be an rvalue by default I think, but in FN parameter the compiler expects an lvalue... this strategy is the way to some unnecessary copy operations, when value 20 (or some big struct instead of it) will copy to the stack..

How can I resolve this problem?

Thanks!

Reply via email to