#include #include #include #include template< class T > struct my_ptr_vector : public boost::ptr_sequence_adapter< std::vector > { }; template< class Key, class T, class Pred = std::less, class Allocator = std::allocator< std::pair > > struct my_map : public std::map { explicit my_map( const Pred& pred = Pred(), const Allocator& alloc = Allocator() ) { } }; #include struct Foo {}; typedef boost::ptr_map_adapter< my_map > foo_map; template< class Key, class T, class Pred = std::less > struct my_ptr_map : public boost::ptr_map_adapter< std::map > { }; typedef my_ptr_map foo_map2; int main() { my_ptr_vector vec; vec.push_back( new Foo ); foo_map m1; foo_map2 m2; std::string s(""); m1.insert( s, new Foo ); m2.insert( s, new Foo ); }