What would break if class was merged with struct
Moritz Maxeiner via Digitalmars-d
digitalmars-d at puremagic.com
Sat May 27 11:26:07 PDT 2017
On Saturday, 27 May 2017 at 17:28:47 UTC, Stanislav Blinov wrote:
> On Saturday, 27 May 2017 at 17:19:48 UTC, Moritz Maxeiner wrote:
>> On Saturday, 27 May 2017 at 17:02:40 UTC, Ola Fosheim Grøstad
>> wrote:
>>
>>>
>>> The class reference type should be fixable with a rewrite
>>> into templated smart pointers, so no need for big changes
>>> there, I think.
>>
>> Smart pointers impose a specific object lifetime, whereas (D)
>> classes do not. You cannot lower (D) class instances to smart
>> pointers.
>
> Lower? No. Wrap - yes. With "scope" from DIP1000 you can even
> do it in a safe manner.
Maybe I was not clear: Of course you can put a class reference
inside a struct, or even simulate a class using a rewriting
mechanism, but you *cannot* use a smart pointer as a replacement
for a class instance, because the latter is normal pointer, and
the former adds features on top of a pointer; they cannot be the
same as a matter of definition, i.e. you cannot replace classes
with smart pointer structs on the language level, because it
removes features from the language.
More information about the Digitalmars-d
mailing list