AMDG
Hicham Mouline wrote:
Question1: is the maximum number of variant<> arguments extendable?
The easiest way is to use make_variant_over which takes an MPL sequence.
It seems make_variant_over is also limited by BOOST_VARIANT_LIMIT_TYPES.
This macro is 20 on 2 platforms (linux-i386-gcc-4.1.2-boost-1.34.1 and
win-i386-vs2005- boost-1.35.0)
on both platforms,
#include <iostream>
#include
#include
class type0 {};
class type1 {};
class type2 {};
class type3 {};
class type4 {};
class type5 {};
class type6 {};
class type7 {};
class type8 {};
class type9 {};
class type10 {};
class type11 {};
class type12 {};
class type13 {};
class type14 {};
class type15 {};
class type16 {};
class type17 {};
class type18 {};
class type19 {};
int main()
{
typedef boost::mpl::vector<
int,
type0,
type1,
type2,
type3,
type4,
type5,
type6,
type7,
type8,
type9,
type10,
type11,
type12,
type13,
type14,
type15,
type16,
type17,
type18
>
types; // vector with 20 types, builds ok.
boost::make_variant_over<types>::type v = 5;
std::cout<< boost::get<int>(v) <