[
Note 1: 
It is possible for a 
variant to hold no value
if an exception is thrown during a
type-changing assignment or emplacement
.The latter means that even a
variant<float, int> can become valueless_by_exception(), for
instance by
struct S { operator int() { throw 42; }};
variant<float, int> v{12.f};
v.emplace<1>(S());
 — 
end note]