//Purpose: // Test rebind_any // #include #include #include #include #include #include #include #include #include #define USE_DEMANGLED #ifdef USE_DEMANGLED #include #define DEMANGLE_TYPE(TYPE) utility::demangled_type_name() #define DEMANGLE_EXPR(EXPR) utility::demangled_type_name(EXPR) #else #include #define DEMANGLE_TYPE(TYPE) typeid(TYPE).name() #define DEMANGLE_EXPR(EXPR) DEMANGLE_TYPE(EXPR) #endif namespace mpl = boost::mpl; using namespace boost::type_erasure; template < typename PH//a te placeholder > struct ph_value { typedef ph_value type; }; int main() { typedef mpl::vector < copy_constructible<_a> , copy_constructible<_b> //#define USE_B_BINDING #ifdef USE_B_BINDING , constructible<_a(ph_value<_a>::type)> #endif > ConceptAB; std::cout<<"ConceptAB=" <::type=" <::type) <<"\n"; std::cout<<"ph_value<_b>::type=" <::type) <<"\n"; typedef mpl::map< mpl::pair<_a, ph_value<_a>::type >, mpl::pair<_b, ph_value<_b>::type > > bindings_map_t; static_binding bindings_made=make_binding(); typedef any< ConceptAB, _b > AnyB; std::cout<<"creating b_any\n"; ph_value<_b>::type b_valu; std::cout<<"typeof(b_valu)=" < ab_binding_t; ab_binding_t const& b_binding=binding_of(b_any); std::cout<<"b_binding=" < AnyA; std::cout<<"creating a_any\n"; ph_value<_a>::type a_valu; std::cout<<"typeof(a_valu)=" <