extern(C++) and struct (constness mangling problem ?)

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Nov 29 13:09:41 PST 2011


On 11/29/11 11:39 AM, deadalnix wrote:
> Le 29/11/2011 19:52, Andrei Alexandrescu a écrit :
>> On 11/29/11 10:50 AM, deadalnix wrote:
>>> 2/ Use that stract/class as a value type. You can do POD, but also
>>> define constructor and destructor, copy constructor and overload
>>> assignement. Anyway, you'll never be able to use proper polymorphism
>>> here, because it would require virtual destructor at least. This is IMO,
>>> what D's struct should achieve.
>>
>> Yes.
>>
>>> The 2/ case is overly used in almost any C++ program. And D struct
>>> should be able to match them. It wouldn't require much to make it
>>> working :
>>> - Default constructor.
>>
>> No.
>>
>
> No, as "No it will never be done for reason xxx" or as in "No you are
> wrong and it not necessary, here the way to do : xxx".
>
> In both cases, the xxx is the most interesting part :'(

Neither :o). The default initializer that doesn't do any real "work", 
does not throw, and puts the object in a state without ex-situ ownership 
has brought D too many benefits to ignore.

We should be able to define types that refuse default initialization (a 
la non-null pointers), but if the default initializer exists, it's good 
as it is.


Andrei



More information about the Digitalmars-d mailing list