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
[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...
Still waiting to hear the security concerns.