According to https://clang.llvm.org/extra/clang-tidy/checks/performance-noexcept-move-constructor.html
Move constructors of all the types used with STL containers, for example, need to be declared noexcept. Otherwise STL will choose copy constructors instead. The same is valid for move assignment operations.
I think this is particularly important for Variant itself that sometimes is a vector of Variant