#include #include #include typedef boost::variant Variant; Variant foo(); struct ToString : boost::static_visitor { template std::string operator()( const T & t ) const { return boost::lexical_cast( t ); } }; int main() { const std::string str = apply_visitor( ToString(), foo() ); }