typedef: what's it good for?

rmcguire rjmcguire at gmail.com
Wed Nov 11 21:52:53 PST 2009


Andrei Alexandrescu <SeeWebsiteForEmail at erdani.org> wrote:
 
> rmcguire wrote:
>> Justin Johansson <no at spam.com> wrote:
>>  
>>> Walter Bright Wrote:
>>>
>>>> When I originally worked out ideas for D, there were many requests from 
>>>> the C and C++ community for a 'strong' typedef, and so I put one in D. I 
>>>> didn't think about it too much, just assumed that it was a good idea.
>>>>
>>>> Now I'm not so sure. Maybe it should be removed for D2.
>>>>
>>>> Does anyone use typedef's?
>>>>
>>>> What do you use them for?
>>>>
>>>> Do you need them?
>>> Early on (2 months ago) when I was just getting into D I asked about 
typedefs 
>> on this forum
>>> and some discussion transpired.
>>>
>>> http://www.digitalmars.com/d/archives/digitalmars/D/
>> Is_typedef_an_alien_96658.html#N96658
>>> (btw. There are a few responses from blasts from recent pasts in that 
thread.)
>>>
>>> Anyway, grepping for typedef over my current "scripting-language in D" 
project 
>> source
>>> shows only old versions of my project using typedefs.  Accordingly it looks 
>> like I have
>>> since managed to convert *all* of my previous typedef incarnations to 
structs 
>> so as to
>>> take advantage of struct's support for static opCall so as to synthesize 
>> "constructors"
>>> (as well enabling use of struct methods).
>>>
>>> Maybe I didn't know enough about D back then, but the big problem with D 
>> typedefs
>>> (for me at least) was there was no support for typedef constructors and code 
>> otherwise
>>> blotted with cast-to-typedef-type is yuk in my way of thinking.
>>>
>>> I think there are only two sensible courses of action for D:  support 
typedef 
>> constructors 
>>> (and methods???) or remove 'em.  I'm not sure which option I prefer (is the 
>> first even 
>>> an option?)
>>>
>>> Cheers
>>> Justin Johansson
>>>
>>>
>> 
>> I like typedef for making header files for c libraries.
>> For example, so that you can't just pass an int to a function expecting 
>> an id.
> 
> Today's typedef allows you to pass an arbitrary int literal as a typedef.
> 
> typedef int ID;
> void fun(ID);
> 
> fun(42); // compiles and runs
> 
> 
> Andrei
> 

well then I also say its broken :)




More information about the Digitalmars-d mailing list