ref fields of .tupleof

Sharp sharp1113 at hotmail.com
Tue May 29 12:18:51 PDT 2012


Hi all!

I've spend several hours to solve my problem, and I did it!

But don't know why it is worked in this way:
I'd like to modify all fields of an object by a specific values 
(for deserialization).

public ref T foo(T)() {
	T *ret = new T;
	// DON'T WORK
	// Looping through fields in this way doesn't modify the object
	auto fields = ret.tupleof;
	foreach(ref field; fields) {
		field = 1; // this doesn't alter 'ret'
	}

	// WORK
	foreach(ref field; ret.tupleof) {
		field = 1; // this does alter it!!!
	}
	return *ret;
}

(Of course the real code doesn't use the value '1'. It uses 
values from an ubyte[] with the corresponding types of T's fields)

Can somebody explain me why it is work like that?
Thanks a lot.


More information about the Digitalmars-d-learn mailing list