www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Returning a ref to a temporary already possible?

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 ஶ்ரீரமணஶர்மா
श्रीरमणशर्मा
Oct 22 2014