On Monday, November 19, 2012 07:02:03 Rob T wrote: > So what's up with @property? Is it being depreciated for being > redundant, or will it later be strictly enforced, or is it to be > optionally enforced through a compiler switch?
It didn't used to be necessary, but there are ambiguities without it (particularly with regards to property functions which return delegates), and a number of people don't like the laxness of practically any function with a particular sort of signature being able to be used as a property function rather than it being part of the API. So, @property was introduced, but similar to override, it was decided that its enforcement would be phased in. -property was introduced so that the compiler's enforcement of it could be sorted out (it's still very buggy) and so that everyone would have time to adjust their code so that it used @property correctly. Now, how strict the enforcement will ultimately be is up for some debate. It needs to be the case that any @property function must be used as a property function in order to avoid the aforementioned ambiguities (so using parens will be illegal with @property functions), but there's quite a lot of dissension surrounding whether non-property functions should be callable as property functions (i.e. whether non-@property functions with the appropriate signature can be called without parens as is currently the case). Some of us consider it to be incredibly sloppy to allow it, whereas others find the idea of requiring parens to be extremely annoying (especially when dealing with UFCS). TDPL is somewhat ambiguous on the matter, and AFAIK, no official decision has been made. - Jonathan M Davis
