@@adamnevraumont4027 For anyone as dumb as me, i translate their comment into even more easy one: std::variant has to know all the types it will contain, because we provide them in std::variant's declaration. This is a closed set. Type erasure (technique shown in vid) doesn't have to know all its types. It has to know some common operations they can perform. The first restricts types, but doesn't - operations The second restricts operations, but doesn't - types