4 ms·
That’s for C++. And how is std::variant implemented?
by grandempire 1y ago
That’s for C++. And how is std::variant implemented?
- LowLevelMahn 1y agonot using a union: https://ojdip.net/2013/10/implementing-a-variant-type-in-cpp/ https://ojdip.net/2013/10/implementing-a-variant-type-in-cpp... because the union can't be extended with variadic template types
- grandempire 1y agoSo instead it has a buffer large enough to hold all the types? That’s what union does. Still waiting to hear the security concerns.
- LegionMammal978 1y agoActually, it does use a union, in both libstdc++ [0] and libc++ [1]. (Underneath a lengthy stack of base classes, since it wouldn't be C++ if it weren't painful to match the specified semantics.) [0] https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/include/std/variant;hb=refs/tags/releases/gcc-15.1.0#l386 https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3... [1] https://github.com/llvm/llvm-project/blob/llvmorg-20.1.3/libcxx/include/variant#L671 https://github.com/llvm/llvm-project/blob/llvmorg-20.1.3/lib...