-betterC and extern(C++) classes

rikki cattermole via Digitalmars-d digitalmars-d at puremagic.com
Sun Sep 10 07:04:20 PDT 2017


On 10/09/2017 2:19 PM, Moritz Maxeiner wrote:
> If TypeInfo for extern(C++) classes is removed, couldn't final 
> extern(C++) classes without base class and which don't implement any 
> interfaces omit the vtable so that the following assert holds:
> 
> ---
> final extern(C++) class Foo {}
> static assert (__traits(classInstanceSize, Foo) == 0LU);
> ---
> 
> The reason I ask is that fairly often I have an abstraction that's 
> better suited as a reference type than a value type, but doesn't need 
> any runtime polymorphy (or the monitor standard classes have). Structs + 
> pointers are the only way I know of to avoid the (in this special case) 
> unneeded vtable overhead, but it always ends up looking worse to read.

We can do it for any class if its final. The problem isn't generating 
the vtable's. But the information required for casting.


More information about the Digitalmars-d mailing list