Предположим, я определяю n
классы через расширение макроса. Я хотел бы зарегистрировать каждый класс, а затем сгенерировать для n = 2
повышение :: вариант, например:
// GeneratedClass_0 generated by macro
// GeneratedClass_1 generated by macro
boost::variant<GeneratedClass_0, GeneratedClass_1> v_class;
Я видел, что я могу использовать это:
using namespace boost;
typedef mpl::vector< GeneratedClass_0 > DefaultTypes;
typedef mpl::push_front< DefaultTypes, GeneratedClass_1 >::type ExtendedTypes;
typedef boost::make_variant_over< ExtendedTypes >::type v_class;
Однако make_variant_over
не поддерживается в каждом компиляторе, даже если я не вижу список.