A: 

Yes, boost::variant knows the value type that it currently stores. It allows visitation and calls the correct overloaded operator(). boost::any uses a fundamental different technique and can't tell you what it currently stores.

Johannes Schaub - litb
But ok, let's assume I have a void * to an array of such variants, which I convert back to std::vector<boost::any>. If the vector contains, say, 3 elements and I call "Go(v[0], v[1], v[2]), all will work as intended, assuming their types are correct with respect to whichever "Go" is instantiated in the template?
Robinson
Sorry, in the above I mean boost::variant, not boost::any...!
Robinson
@robinsont no you need to use the visitation interface of it. It'S explained far better than I could do in boost variant's manual.
Johannes Schaub - litb
Ok, to make it clear, I've added a little demo program, showing what I want to do (kind-of). I'm not sure how using boost::variant would help. I guess this isn't the kind of thing you can do with templates.
Robinson
A: 
Robinson