Re:Metaclasses: Thoughts on generative C++
by justicezyx on Friday July 28, 2017 @12:41PM
(#14875527)
> If you want dynamic dispatch, you don't use a virtual class, you use a "trait object".
Is this referring to Rust? Then it sounds like it will have similar overhead as C++'s virtual functions.
Re:Metaclasses: Thoughts on generative C++
by steveklabnik on Friday July 28, 2017 @12:51PM
(#14875618)
Yes, it is, and yes, it does. There are small differences due to the stuff I said above, but it's similar.
If you want dynamic dispatch, you don't use a virtual class, you use a "trait object". Basically it's a double pointer: a (pointer to vtable, pointer to data). Technically the C++ standard (as far as I know) doesn't define the exact implementation of this stuff, but in my understanding the vtable pointer is stored with the data.
There are pros and cons to each approach.