On Tuesday, 5 February 2013 at 08:39:15 UTC, Dmitry Olshansky wrote:
On 02/05/2013 02:28 AM, Andrei Alexandrescu wrote:> On 2/4/13 2:04 PM, Jonathan M Davis wrote:
>> We could save a lot of boilerplate code if we can simply
make it
>> variables and
>> property functions guaranteed to be swappable without
breaking code.
>
> I think this is quite powerful. The way we can do this is by
making
> properties emulate a subset of actual variables.
>

This is the primary real-world proble to solve.
If tackle it right  we'd secure a sizable flow of Java
converts simply because of this feature alone ;)

More seriously I believe it's worth noting that properties can't emulate (in principle) exactly one aspect of variable - taking address as a pointer. Honestly I can't see a way to overcome it without introducing a user-defined way to impose this restriction on a field of a struct/class.

I'm not really sure which part of my article you are addressing here, but allowing 'opAddress' is available as a last resort. Also note that I had proposed 'cast(function)' instead of '&' to get the top-level function, which, unlike '&', can give: 'Error: not castable as a function'

Then keeping in mind __traits I have the following clause to add to the current proposal:

Inside of aggregate a field marked with @property indicate is semantically equivalent to compiler wrapping it with trivial getter and setter. Example:
struct Foo{
@property T x;
}

treated  semantically as if:
T __x; // hidden by compiler
//templated to have deduced safe, pure, nothrow
@property T x()()inout{ return x; }
@property void x()(T val){ x = val; }

---
Dmitry Olshansky

While I appreciate your responding to my post, I'm a little confused which of its points you are addressing here.

Reply via email to