As I understood all types of boost.variant are parsed into real types (meaning as if boost variant would after compilation t
boost.variant has a .type() function which can return the typeid of the active type, provided you've enabled RTTI.
You could also define a static visitor to perform actions depending on the type of content of the variant, e.g.
struct SomeVisitor : public boost::static_visitor
{
double operator()(const func0& f0) const { return f0(1.0); }
double operator()(const func1& f1) const { return f1(1.0, 1.0); }
double operator()(int integer) const { return integer; }
};
...
std::cout << boost::apply_visitor(SomeVisitor(), v) << std::endl;