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 think the whole idea is harmless because semantically, from the user 
> perspective, delegates and function pointers works just like normal 
> functions. So, why not?

I can see it being confusing and don't see much benefit - that's all. The 
current
syntax is just a little more verbose, and mixins could be used if this scheme 
had
to be used on a larger scale.

artur

Reply via email to