Calling delegate properties without parens
Piotr Szturmaj
bncrbme at jadamspam.pl
Sun Apr 15 06:45:56 PDT 2012
Artur Skawina wrote:
> On 04/15/12 03:01, Piotr Szturmaj wrote:
>> Artur Skawina wrote:
>>> @property is for functions masquerading as data, i'm not sure extending it
>>> to pointers and delegates would be a good idea. What you are asking for is
>>> basically syntax sugar for:
>>>
>>> struct CommonInputRange(E)
>>> {
>>> bool delegate() _empty;
>>> @property auto empty() { return _empty(); };
>>> @property auto empty(typeof(_empty) dg) { _empty = dg; };
>>> E delegate() _front;
>>> @property auto front() { return _front(); };
>>> @property auto front(typeof(_front) dg) { _front = dg; };
>>> void delegate() popFront;
>>> }
>>>
>>
>> Yes, I was thinking about this, but it adds unnecessary overhead. I want to call delegates directly.
>
> The compiler has to implement it internally exactly like that anyway. D's design
> relies on such code being efficient - there is no preprocessor, no inline
> attribute and no macros. The trivial functions have to be inlined, if that
> doesn't happen it's a compiler bug. Once inlined, there's no overhead.
I wondered if properties can be inlined that way. But you have conviced
me that indeed, inlining should help here. So, I'll use proxy
properties. Thanks for your advice.
More information about the Digitalmars-d-learn
mailing list