Comment by grandempire
Comment by grandempire 2 days ago
That’s for C++. And how is std::variant implemented?
Comment by grandempire 2 days ago
That’s for C++. And how is std::variant implemented?
Actually, 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...
[1] https://github.com/llvm/llvm-project/blob/llvmorg-20.1.3/lib...
So instead it has a buffer large enough to hold all the types? That’s what union does.
Still waiting to hear the security concerns.
not using a union: https://ojdip.net/2013/10/implementing-a-variant-type-in-cpp... because the union can't be extended with variadic template types