type_erasure_print_map.cpp I:\boost-sandbox\type_erasure\boost/type_erasure/detail/get_signature.hpp(23): error C2027: use of undefined type 'boost::type_erasure::ostreamable' with [ Os=std::basic_ostream>, T=std::pair ] I:\boost-sandbox\type_erasure\boost/type_erasure/detail/get_signature.hpp(25) : see reference to class template instantiation 'boost::type_erasure::detail::get_signature::nested' being compiled with [ Concept=boost::type_erasure::ostreamable>,std::pair> ] I:\boost-sandbox\type_erasure\boost/type_erasure/detail/adapt_to_vtable.hpp(235) : see reference to class template instantiation 'boost::type_erasure::detail::get_signature' being compiled with [ Concept=boost::type_erasure::ostreamable>,std::pair> ] I:\boost-sandbox\type_erasure\boost/type_erasure/detail/adapt_to_vtable.hpp(231) : while compiling class template member function 'void boost::type_erasure::detail::vtable_adapter::value(T0,T1)' with [ C=boost::type_erasure::ostreamable>,std::pair>, Sig=void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &), T0=boost::type_erasure::detail::storage &, T1=const boost::type_erasure::detail::storage & ] I:\boost-sandbox\type_erasure\boost/type_erasure/detail/vtable.hpp(268) : see reference to class template instantiation 'boost::type_erasure::detail::vtable_adapter' being compiled with [ C=boost::type_erasure::ostreamable>,std::pair>, Sig=void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &) ] I:\boost-sandbox\type_erasure\boost/type_erasure/detail/vtable.hpp(266) : while compiling class template static data member 'const boost::type_erasure::detail::vtable_storage10 boost::type_erasure::detail::vtable_init10,boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const char *const &)>,boost::type_erasure::detail::vtable_adapter (const std::_Tree_const_iterator<_Mytree> &)>,boost::type_erasure::detail::storage (const boost::type_erasure::detail::storage &)>,boost::type_erasure::destructible>,boost::type_erasure::detail::vtable_adapter (void)>,boost::type_erasure::detail::storage (void)>,boost::type_erasure::detail::vtable_adapter,U>,bool (const boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter>,boost::type_erasure::detail::storage &(const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,U>,void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter>,void (boost::type_erasure::detail::storage &)>>::value' with [ T0=boost::type_erasure::detail::vtable_adapter,std::ios_base &(boost::type_erasure::detail::storage &)>, T1=boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>, T2=boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const char *const &)>, T3=boost::type_erasure::detail::vtable_adapter,boost::type_erasure::detail::storage (const boost::type_erasure::detail::storage &)>, T4=boost::type_erasure::destructible<_iter>, T5=boost::type_erasure::detail::vtable_adapter,boost::type_erasure::detail::storage (void)>, T6=boost::type_erasure::detail::vtable_adapter,bool (const boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>, T7=boost::type_erasure::detail::vtable_adapter,boost::type_erasure::detail::storage &(const boost::type_erasure::detail::storage &)>, T8=boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>, T9=boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &)>, Table=boost::type_erasure::detail::vtable_storage10,std::ios_base &(boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const char *const &)>,boost::type_erasure::detail::vtable_adapter,boost::type_erasure::detail::storage (const boost::type_erasure::detail::storage &)>,boost::type_erasure::destructible<_iter>,boost::type_erasure::detail::vtable_adapter,boost::type_erasure::detail::storage (void)>,boost::type_erasure::detail::vtable_adapter,bool (const boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,boost::type_erasure::detail::storage &(const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &)>>, C=base_and_derived>>, Sig=std::ios_base &(boost::type_erasure::detail::storage &), Os=std::basic_ostream>, T=std::pair, _Mytree=std::_Tree_val,std::allocator>,false>>, U=std::_Tree_const_iterator,std::allocator>,false>>>, R=const std::pair & ] I:\boost-sandbox\type_erasure\boost/type_erasure/binding.hpp(194) : see reference to class template instantiation 'boost::type_erasure::detail::vtable_init10' being compiled with [ Table=boost::type_erasure::detail::vtable_storage10,std::ios_base &(boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const char *const &)>,boost::type_erasure::detail::vtable_adapter,boost::type_erasure::detail::storage (const boost::type_erasure::detail::storage &)>,boost::type_erasure::destructible<_iter>,boost::type_erasure::detail::vtable_adapter,boost::type_erasure::detail::storage (void)>,boost::type_erasure::detail::vtable_adapter,bool (const boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,boost::type_erasure::detail::storage &(const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>,boost::type_erasure::detail::vtable_adapter,void (boost::type_erasure::detail::storage &)>>, T0=boost::type_erasure::detail::vtable_adapter>>,std::ios_base &(boost::type_erasure::detail::storage &)>, T1=boost::type_erasure::detail::vtable_adapter>,std::pair>,void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>, T2=boost::type_erasure::detail::vtable_adapter>,const char *>,void (boost::type_erasure::detail::storage &,const char *const &)>, T3=boost::type_erasure::detail::vtable_adapter,std::allocator>,false>>> (const std::_Tree_const_iterator,std::allocator>,false>>> &)>,boost::type_erasure::detail::storage (const boost::type_erasure::detail::storage &)>, T4=boost::type_erasure::destructible,std::allocator>,false>>>>, T5=boost::type_erasure::detail::vtable_adapter,std::allocator>,false>>> (void)>,boost::type_erasure::detail::storage (void)>, T6=boost::type_erasure::detail::vtable_adapter,std::allocator>,false>>>,std::_Tree_const_iterator,std::allocator>,false>>>>,bool (const boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>, T7=boost::type_erasure::detail::vtable_adapter &,std::_Tree_const_iterator,std::allocator>,false>>>>,boost::type_erasure::detail::storage &(const boost::type_erasure::detail::storage &)>, T8=boost::type_erasure::detail::vtable_adapter,std::allocator>,false>>>,std::_Tree_const_iterator,std::allocator>,false>>>>,void (boost::type_erasure::detail::storage &,const boost::type_erasure::detail::storage &)>, T9=boost::type_erasure::detail::vtable_adapter,std::allocator>,false>>>>,void (boost::type_erasure::detail::storage &)> ] I:\boost-sandbox\type_erasure\boost/type_erasure/binding.hpp(103) : see reference to function template instantiation 'boost::type_erasure::binding::impl_type::impl_type>(const boost::type_erasure::static_binding &)' being compiled with [ Concept=abstract_printer::requirements, T0=boost::mpl::pair<_os,std::basic_ostream>>, T1=boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>, T2=boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>, Map=boost::mpl::map>>,boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>,boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>> ] I:\boost-sandbox\type_erasure\boost/type_erasure/any.hpp(858) : see reference to function template instantiation 'boost::type_erasure::binding::binding>(const boost::type_erasure::static_binding &)' being compiled with [ Concept=abstract_printer::requirements, T0=boost::mpl::pair<_os,std::basic_ostream>>, T1=boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>, T2=boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>, Map=boost::mpl::map>>,boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>,boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>> ] I:\boost-sandbox\type_erasure\boost/type_erasure/tuple.hpp(565) : see reference to function template instantiation 'boost::type_erasure::any::any>(U &,const boost::type_erasure::static_binding &)' being compiled with [ Concept=abstract_printer::requirements, T=_os &, U0=std::basic_ostream>, T0=boost::mpl::pair<_os,std::basic_ostream>>, T1=boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>, T2=boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>, U=std::basic_ostream>, Map=boost::mpl::map>>,boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>,boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>> ] I:\boost-sandbox\type_erasure\boost/type_erasure/tuple.hpp(627) : see reference to function template instantiation 'boost::type_erasure::detail::tuple_storage::tuple_storage,U0,U1,U2>(const Table &,U0 &,U1 &,U2 &)' being compiled with [ Concept=abstract_printer::requirements, T0=_os &, T1=_iter, T2=_iter, Map=boost::mpl::map>>,boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>,boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>>, U0=std::basic_ostream>, U1=std::_Tree_const_iterator,std::allocator>,false>>>, U2=std::_Tree_const_iterator,std::allocator>,false>>>, Table=boost::type_erasure::static_binding>>,boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>,boost::mpl::pair<_iter,std::_Tree_const_iterator,std::allocator>,false>>>>>> ] type_erasure_print_map.cpp(143) : see reference to function template instantiation 'boost::type_erasure::tuple::tuple,std::_Tree_const_iterator<_Mytree>,std::_Tree_const_iterator<_Mytree>>(U0 &,U1 &,U2 &)' being compiled with [ Concept=abstract_printer::requirements, T0=_os &, T1=_iter, T2=_iter, _Elem=char, _Traits=std::char_traits, _Mytree=std::_Tree_val,std::allocator>,false>>, U0=std::basic_ostream>, U1=std::_Tree_const_iterator,std::allocator>,false>>>, U2=std::_Tree_const_iterator,std::allocator>,false>>> ] type_erasure_print_map.cpp(220) : see reference to function template instantiation 'void abstract_printer::print,std::map<_Kty,_Ty>>(std::basic_ostream<_Elem,_Traits> &,const Range &) const' being compiled with [ _Kty=int, _Ty=double, _Elem=char, _Traits=std::char_traits, Range=std::map ] I:\boost-sandbox\type_erasure\boost/type_erasure/detail/get_signature.hpp(23): error C2065: 'apply' : undeclared identifier I:\boost-sandbox\type_erasure\boost/type_erasure/detail/get_signature.hpp(23): error C2056: illegal expression I:\boost-sandbox\type_erasure\boost/type_erasure/detail/get_signature.hpp(23): error C2027: use of undefined type 'boost::type_of::msvc_extract_type::id2type_impl<__formal>' with [ ID=boost::type_erasure::detail::get_signature>,std::pair>>::nested ] and [ __formal=true ] I:\boost-sandbox\type_erasure\boost/type_erasure/detail/get_signature.hpp(26): error C3203: 'type' : unspecialized class template can't be used as a template argument for template parameter 'T', expected a real type I:\boost-sandbox\type_erasure\boost/type_erasure/detail/get_signature.hpp(26): error C2955: 'boost::type' : use of class template requires template argument list I:\boost-trunk\boost/type.hpp(14) : see declaration of 'boost::type' I:\boost-sandbox\type_erasure\boost/type_erasure/detail/get_signature.hpp(26): error C2955: 'boost::remove_pointer' : use of class template requires template argument list I:\boost-trunk\boost/type_traits/remove_pointer.hpp(72) : see declaration of 'boost::remove_pointer' I:\boost-sandbox\type_erasure\boost/type_erasure/detail/adapt_to_vtable.hpp(237): error C2027: use of undefined type 'boost::type_erasure::ostreamable' with [ Os=std::basic_ostream>, T=std::pair ] I:\boost-sandbox\type_erasure\boost/type_erasure/detail/adapt_to_vtable.hpp(237): error C3861: 'apply': identifier not found