3 ms·
Not true! This is true in monomorphized languages like Rust, but C++ has vtables which allows for generic code at an assembly level. Maybe I’m misunderstanding
by nickysielicki 5y ago
Not true! This is true in monomorphized languages like Rust, but C++ has vtables which allows for generic code at an assembly level.
Maybe I’m misunderstanding you.
- jcelerier 5y agorun-time polymorphism is generally not called "generics"
- yakubin 5y agoWhat jcelerier said, but also as for: > This is true in monomorphized languages like Rust It's not necessarily true for monomorphized code. Inlining is enabled by monomorphization, but is not required. You can see it with templates in C++: function template instantiations aren't always inlined. They are instantiated in every TU separately, if they are defined in headers, but then they may be called in this TU just like any other function without inlining. This requires the linker to deduplicate the instantiations later. In another scenario you may declare a function template in a header without the implementation, putting the implementation in a CPP file along with explicit instantiation. In that case the compiler is not able to inline this function in another TU (without LTO). As for Rust, Rust is not universally monomorphized. The user of generic code in Rust gets to decide whether they want to use monomorphization or vtables, regardless of the ideas of the author of said generic code.
- nickysielicki 5y agoThanks for this comment, I have a lot to learn.