
Stefan Strasser wrote:
Am Friday 23 October 2009 01:41:57 schrieb Sid Sacek:
[ Edward Diener wrote: ] Manipulating a reference property would be done purely through accessing the property. Accessing a reference property returns a T & or a T const & depending on whether the property is const or not. In the case where a T & is returned the reference property is read/write if T itself is not const, since you can manipulate T through the reference, whereas in the case where T const & is returned ( or where T & is returns but T is itself const), the reference property is read only. Who says that's how properties work? That just happens to be your version of the implementation details.
I don't understand what a "reference property" is supposed to be. a property getter can return a reference (if it chooses to do so, not in general, since there may not be an underlying data member), but what is a reference property?
In my implementation a "reference property" is a property whose getter returns a reference to the type of the property. A reference property does not have a setter. The actual backing data for a "reference property" can be a value type itself or a reference. The type T of a reference property does not need to be copy constructible. This is as opposed to what most people, and other language implementations, posit as a "property", which is generally a value type, meaning that a value is returned by the getter and a value is passed to the setter, of the particular type. The type T of a value type property does need to be copy constructible in order to pass the value back and forth. My own reasons for bifurcating the notion of a "property" between the more common value type property and the reference type property is because I do no think a clean implementation of the "property" concept can be done in C++ which allows either a reference or a value to be returned from the same C++ property implementation. I am sorry I have not posted my own "property" implementation anywhere yet, but I am still working on some other "property" issues which are important to me ( besides trying like everyone else to make a living as a software designer/programmer ). I originally added my comments about a "reference" type property because a poster in this thread felt that one could not implement this without language support and I do not believe that is the case, and wanted to explain in general how one could at least theoretically implement a "reference property". In a way I am arguing for the notion that a single implementation of the "property" concept, in other words a single template class which implements a C++ "property", while desirable from the point of view of usability, may not be practical from the point of view of flexibility and an end user's needs.