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