#define USE_SHARED_PTR 1 #include #include #include #include #include #include #include #include #define BOOST_PP_LOCAL_MACRO(n) class BOOST_PP_CAT(C, n) { public: int i; }; #define BOOST_PP_LOCAL_LIMITS (0, 49) #include BOOST_PP_LOCAL_ITERATE() #define SHARED_PTR_C(z, n, data) boost::shared_ptr /**/ #define C(z, n, data) BOOST_PP_CAT(C, n) /**/ #if USE_SHARED_PTR typedef boost::mpl::vector49 Mplv_t; #else typedef boost::mpl::vector49 Mplv_t; #endif typedef boost::make_variant_over::type v_t; void foo(const v_t& v) { //C: Copy variant using assignment operator v_t v2; v2 = v; } int main() { v_t v; foo(v); return 0; }