Returning a ref to a temporary already possible?

Shriramana Sharma via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Oct 22 22:09:34 PDT 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 ஶ்ரீரமணஶர்மா श्रीरमणशर्मा



More information about the Digitalmars-d-learn mailing list