more utility for boost::variant