//Purpose: // See if one_of_maybe can handle code posted here: // /* http://lists.boost.org/Archives/boost/2010/02/162167.php */ #include #include #include #include struct empty {}; struct foo {}; struct bar {}; typedef std::unique_ptr foo_ptr; typedef std::unique_ptr bar_ptr; typedef std::vector foo_ptr_vec; typedef std::vector bar_ptr_vec; typedef boost::composite_tagged_seq < boost::composite_tags::one_of_maybe , boost::mpl::integral_c , boost::mpl::list < empty , foo_ptr_vec , bar_ptr_vec > > my_variant; class my_class : public my_variant { my_class(const my_class&); my_class& operator=(const my_class&); public: my_class() : my_variant(boost::mpl::integral_c(), empty()) { } my_class(my_class&& other) : my_variant(std::move(other)) { } }; #include int main(void) { my_class x; std::cout<<"***after my_class default::CTOR:\n"; std::cout<<" which="<(std::move(fpv2)); std::cout<<"***after inject:\n"; std::cout<<" foo_ptr_vec which="<()->at(0).get()="<()->at(0).get()<<"\n"; return 0; }