need clarification: will typedef, C struct initialization, etc.

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon May 31 20:37:45 PDT 2010


On 05/31/2010 10:07 PM, Simen kjaeraas wrote:
> Lionello Lunesu <lio at lunesu.remove.com> wrote:
>
>> I also miss typedef. I thought D had a great opportunity to fix it.
>>
>> Take something like the Windows headers. It mostly consists of typedefs
>> for handles and whatnot. Without typedef you'd have to use alias and
>> type safety is out of the windows.
>>
>> So what would be the way to translate those Windows headers? Create a
>> unique struct for each old typedef? With alias this, and a ctor? Well,
>> if that's the way to do it now, why not make typedef a shortcut for
>> exactly that!?
>>
>> IIRC typedef is gone because you and Walter could not agree whether it
>> had to be a subtype or a supertype of the typedef'ed type. For me it's
>> rather simple: I want to introduce a new type in such a way that it
>> helps me prevent mistakes, ie. passing one handle when the function
>> wants another, even though both are based on void*, or whatever.
>>
>> Bring typedef back!
>
> struct Typedef( T ) {
> T payload;
> alias payload this;
> }
>
> alias Typedef!int myInt;
>
> There you go.

Yah, perfect - that would be the subtype. I think we should work on 
adding a pseudo-supertype as well, and also on a completely independent 
type. Then we can add these abstractions to std.typecons.

Andrei



More information about the Digitalmars-d mailing list