Is the address-of operator (&) really needed?
Lars T. Kyllingstad
public at kyllingen.net
Sat Jun 2 04:23:08 PDT 2012
On Thursday, 31 May 2012 at 12:29:21 UTC, Steven Schveighoffer
wrote:
> On Thu, 31 May 2012 08:27:17 -0400, Sandeep Datta
> <datta.sandeep at gmail.com> wrote:
>
>>>
>>> If we removed the requirement for the ampersand, along with
>>> requiring parentheses for non-property functions, code which
>>> expected to call the function without parentheses would
>>> silently compile, but not do what was intended.
>>
>>
>> Consider this...
>>
>> float handleRequest() {
>> return 1.0f;
>> }
>>
>> float x = handleRequest; //compilation error
>>
>> or
>>
>> auto x = handleRequest;
>>
>> writefln("%f", x); //compilation error
>
> What about:
>
> handleRequest;
That doesn't compile now, if handleRequest is a function pointer
(or any other variable):
Error: var has no effect in expression (handleRequest)
A much bigger problem is implicit conversions to bool, which are
used everywhere:
if (handleRequest) { ... }
assert (handleRequest);
Now, they test the result of handleRequest. After the proposed
change they test the function pointer.
If this change were to happen we'd need a loooong period between
parentheses becoming mandatory for non-properties and dropping
the & operator. We're talking years here. It's totally not
worth it.
-Lars
More information about the Digitalmars-d
mailing list