boost::variant とかは swap が例外を投げ得るyo