using a typedefed variable with library classes
Sergey Gromov
snake.scaly at gmail.com
Mon Jan 12 14:23:38 PST 2009
Tue, 13 Jan 2009 05:59:58 +0900, Bill Baxter wrote:
> On Tue, Jan 13, 2009 at 1:48 AM, Sergey Gromov <snake.scaly at gmail.com> wrote:
>
>> However, with a typedef, LocalType is a distinct type. Yes it casts to
>> int implicitly, but likewise it casts implicitly to char, short and
>> long. So compiler gets a whole load of File.write() functions matching
>> with conversions, and fails because of the ambiguity.
>>
>> That's how the language works, and it's pretty consistent IMO. What you
>> can do is:
>
> But the difference is LocalType can be converted to int exactly in all
> cases. Given a choice of int,char,short,etc. clearly the conversion
> to int is best choice. It may be consistent with other cases
> involving multiple legal conversions, but usually you don't have such
> a single clearly preferred conversion. It seems to significantly
> reduce the utility of typedef.
It's about overload resolution rules. The specs say:
The levels of matching are:
* no match
* match with implicit conversions
* exact match
There is no notion of 'best' implicit conversion.
More information about the Digitalmars-d-learn
mailing list