On Friday, 26 April 2013 at 08:00:28 UTC, Walter Bright wrote:
On 4/26/2013 12:07 AM, Maxim Fomin wrote:
Regarding bool type as integer type is C atavism and should be abandoned.

There's a very loooong history of 0 being regarded as false and 1 as true - it goes well beyond C.

This should be irrelevant in case of long parameter. Such conversion should not be in the language (like feature of array to pointer conversion and function to pointer to function conversion is present in C but not in D).

This leads to comic sitatuation presented in the thread when changing literal to
lvalue or using different enums changes overloading matching.

Yet I showed an analogous example where different overloads were selected based on a different integer value.

There's no getting away from having to pay attention when declaring different overloads of a function. In the original example, the correct solution is to provide a foo(int). I'd be suspicious of any code that only had overloads on just bool and long - it doesn't make sense.

I argue the correct solution is to call integer function with integer parameter when integer value is passed. Adjusting to buggy compiler behavior isn't a good idea.

Reply via email to