Possible @property compromise

TommiT tommitissari at hotmail.com
Tue Jan 29 20:23:24 PST 2013


On Wednesday, 30 January 2013 at 02:29:12 UTC, Jonathan M Davis 
wrote:
> But if we can do something like
>
> struct S
> {
>     @property int prop;
> }
>
> then that fixes the problem.

I had a thought. What if we use this opportunity to also fix the 
problem with transient ranges. So... what if, instead of using 
the attribute @property for the purpose you suggest, we added a 
new attribute, let's say @noref, and that's what it would mean:

struct S
{
     @noref int value; // #1

     @noref ref const(float) front() const; // #2
}

S s;

#1: Can't take the address/reference of s.value

#2: Can't take the address/reference of s.front()

Transient ranges could notate their front method with @noref, 
which would prevent all incorrect use of them, and would enable 
their front to return by ref or const ref, instead of by value.


More information about the Digitalmars-d mailing list