With the latest DMD I've noticed that the following no longer works: struct A { int[4] _data; }
struct B { ref B foo(const ref A a) { } } B b = B().foo(A([1, 2, 3, 4])); // Error: A() is not an lvalue How much of a difference is 'ref' supposed to make once DMD improves in the future? Am I better off not using 'ref'? I suppose I still don't know when to go with 'ref' and when not to. Is there supposed to be a performance difference between something like this: // _1 struct B { ref B foo(const ref A a){ } } A a = A([1, 2, 3, 4]); B b = B().foo(a); and this: // _2 struct B { ref B foo(A a){ } } B b = B().foo(A([1, 2, 3, 4])); ??? P.S. In the past I've noticed improvement in performance when using 'ref'. With the latest DMD, using 'ref' is actually slightly slower (at least in the above example)