BOOSTサイトのテストコードの引用だけど

typedef boost::make_recursive_variant<int,string,vector <boost::recursive_variant_> > var_t;
vector<var_t> va0;
va0.push_back("hoge");
va0.push_back(30);

vector<var_t> va1;
va1.push_back(123);
val.push_back("xxx");

va0.push_back(va1);
va0.push_back(va0);
val_t = va0;

apply_visitor(vector_printer(),v);

ビジター、リーフ構造はデザパタ、variantはタイプリスト使用、
世の中どんどん便利になるね。