Why don't you like visitor to dispatch the type stored in the variant?
I like it very much, and I use variant because of the power of the
static visiting mechanism.
The reason I wanted to test if the variant contains its 1st type is the
following: my variant is made of a list of shared-pointers to various
types; there's a routine that initializes it with one of the types
depending on some conditions, then it applies some visitor on the
resulting variant and stores it then in a container - however, there's
no "default" behavior, so if neither condition was met, the variant
remains "uninitialized" - i.e. it contains 1st type "zero" ptr. I want
neither apply the visitor on "empty" smartpointer nor store it in the
container, so I have to know whether it was "really" created or not. Two
simple ways I can think about are to test the resulting variant or to
introduce some flag - of course, both ways are far from ideal...
struct my_visitor {
typedef bool return_type;
vector