What would be the consequence of implementing interfaces as fat pointers ?
Michel Fortin
michel.fortin at michelf.ca
Tue Apr 1 10:46:31 PDT 2014
On 2014-04-01 14:17:33 +0000, Manu <turkeyman at gmail.com> said:
> On 1 April 2014 22:03, Michel Fortin <michel.fortin at michelf.ca> wrote:
>
>> On 2014-04-01 07:11:51 +0000, Manu <turkeyman at gmail.com> said:
>>
>>> Of course, I use alias this all the time too for various stuff. I said
>>> before, it's a useful tool and it's great D *can* do this stuff, but I'm
>>>
>>> talking about this particular super common use case where it's used to
>>> hack
>>> together nothing more than a class without a vtable, ie, a basic ref type.
>>> I'd say that's worth serious consideration as a 1st-class concept?
>>>
>>
>> You don't need it as a 1st-class D concept though. Just implement the
>> basics of the C++ object model in D, similar to what I did for Objective-C,
>> and let people define their own extern(C++) classes with no base class.
>> Bonus if it's binary compatible with the equivalent C++ class. Hasn't
>> someone done that already?
>
> I don't think the right conceptual solution to a general ref-type intended
> for use throughout D code is to mark it extern C++... That makes no sense.
I was thinking of having classes that'd be semantically equivalent to
those in D but would follow the C++ ABI, hence the extern(C++). It
doesn't have to support all of C++, just the parts that intersect with
what you can express in D. For instance, those classes would be
reference types, just like D classes; if you need value-type behaviour,
use a struct.
But maybe that doesn't make sense.
--
Michel Fortin
michel.fortin at michelf.ca
http://michelf.ca
More information about the Digitalmars-d
mailing list