lvalue <-> rvalue problem
Namespace
rswhite4 at googlemail.com
Sun Jan 27 03:28:17 PST 2013
The following code prints:
/home/c494/c719.d(27): Error: (Vec2!(float) __ctmp1173 =
_D4c71911__T4Vec2TfZ4Vec26__initZ;
, __ctmp1173).this(4F, 2F) is not an lvalue
[code]
import std.stdio;
struct Vec2(T) {
public:
T x;
T y;
this(T x, T y) {
}
}
alias Vec2f = Vec2!(float);
class Foo {
public:
static Foo make(float i, ref const Vec2f a) {
return new Foo();
}
static Foo make(float i, const Vec2f a) {
return Foo.make(i, a);
}
}
void main() {
Foo f = Foo.make(42, Vec2f(4, 2));
}
[/code]
If I change i from float to int it works. Also if I write 42f
instead of 42. That is strange. Could someone explain me that?
Same with this code: http://dpaste.1azy.net/2c98fe95
But there I found no workaround.
More information about the Digitalmars-d-learn
mailing list