October 23, 2014
IIUC the whole deal with not allowing ref parameters to point to rvalues is the fear that they may be returned outside the function, but it seems this is already possible:

module reftest ;
import std.stdio ;
struct Pair {
	int x, y ;
	this (int x_, int y_) { x = x_ ; y = y_ ; writeln("Pair constructed") ; }
	auto handle() { return this ; }
}
void main() {
	auto P = Pair(1, 2).handle ;
	writeln(typeof(P).stringof) ;
	P.x = 3 ;
	writeln(P.x, ' ', P.y) ;
}

Running this makes it clear that only the one Pair object is ever constructed. But I don't understand how it is that the type of P is Pair and not ref(Pair).

-- 
Shriramana Sharma ஶ்ரீரமணஶர்மா श्रीरमणशर्मा