Stack overflow error

Bill Baxter dnewsgroup at billbaxter.com
Sun Jan 21 16:45:20 PST 2007


Andrey Khropov wrote:
> Bill Baxter wrote:
> 
> 
>> Oh, you do realize D treats  'blah' as a synonym for 'blah()' if blah is a
>> function or delegate, right?
> 
> I think it's a harmful and error-prone feature. And it's also inconsistent:
> 
> auto f2 = f; // here f is treated like a variable
> f; // here f means call itself, but it looks exactly the same
> 
> Why on earth is this needed ?
> 

I know what you mean.  But it's very handy in the context of methods 
that masquerade as properties.  So you can say obj.prop instead of 
obj.prop().  I think I would prefer, though, if that feature had to be 
explicitly enabled for a particular method.  Something like:

     property float prop() { return m_prop; }

Then for most functions (which aren't properties) we could dispense with 
the & required to take the address.

On the other hand there is something to be said for consistency and 
regularity.  foo is synonymous with foo() if foo is a function.  Period. 
   So I can sorta see why Walter made it the way it is.  That and 
probably it was a lot easier to implement the way it is, since the 
compiler doesn't have to keep track of whether a function is a 
'property' function or not.

--bb


More information about the Digitalmars-d-bugs mailing list