I have found that putting #include "boost/shmem/containers/map.hpp" #include <boost/shmem/named_shared_object.hpp> first in the header list removes the ambiguity. Also when i call insert on the boost::shmem::map the pair that i am passing gives me the following: C:\boost_1_33_1\boost\shmem\containers\detail\tree_func.hpp(529) : error C2064: term does not evaluate to a function taking 2 arguments C:\boost_1_33_1\boost\shmem\containers\detail\tree_func.hpp(520) : while compiling class-template member function 'bool boost::shmem::detail::rb_tree_func<Node,Key,KeyOfValue,KeyCompare>::insert_unique_prepare(const boost::shmem::detail::rb_tree_func<Node,Key,KeyOfValue,KeyCompare>::node_pointer & ,const KeyCompare &,const Key &,boost::shmem::detail::rb_tree_func<Node,Key,KeyOfValue,KeyCompare>::node_pointer & ,boost::shmem::detail::rb_tree_func<Node,Key,KeyOfValue,KeyCompare>::insert_unique_context &)' with [ Node=boost::shmem::detail::rb_tree<long,std::pair<const long,PHRunningData>,boost::shmem::detail::select1st<std::pair<const long,PHRunningData>>,boost::shmem::allocator<std::pair<long,PHRunningData>,boost::shmem::detail::basic_named_object_impl<char,boost::shmem::simple_seq_fit<boost::shmem::shared_mutex_family>,boost::shmem::flat_map_index>::segment_manager>,std::allocator<std::pair<const long,PHRunningData>>>::node_val_t, Key=long, KeyOfValue=boost::shmem::detail::select1st<std::pair<const long,PHRunningData>>, KeyCompare=boost::shmem::allocator<std::pair<long,PHRunningData>,boost::shmem::detail::basic_named_object_impl<char,boost::shmem::simple_seq_fit<boost::shmem::shared_mutex_family>,boost::shmem::flat_map_index>::segment_manager> ] C:\boost_1_33_1\boost\shmem\containers\tree.hpp(539) : see reference to class template instantiation 'boost::shmem::detail::rb_tree_func<Node,Key,KeyOfValue,KeyCompare>' being compiled with [ Node=boost::shmem::detail::rb_tree<long,std::pair<const long,PHRunningData>,boost::shmem::detail::select1st<std::pair<const long,PHRunningData>>,boost::shmem::allocator<std::pair<long,PHRunningData>,boost::shmem::detail::basic_named_object_impl<char,boost::shmem::simple_seq_fit<boost::shmem::shared_mutex_family>,boost::shmem::flat_map_index>::segment_manager>,std::allocator<std::pair<const long,PHRunningData>>>::node_val_t, Key=long, KeyOfValue=bo ost::shmem::detail::select1st<std::pair<const long,PHRunningData>>, KeyCompare=boost::shmem::allocator<std::pair<long,PHRunningData>,boost::shmem::detail::basic_named_object_impl<char,boost::shmem::simple_seq_fit<boost::shmem::shared_mutex_family>,boost::shmem::flat_map_index>::segment_manager> ] C:\boost_1_33_1\boost\shmem\containers\tree.hpp(536) : while compiling class-template member function 'std::pair<_Ty1,_Ty2> boost::shmem::detail::rb_tree<Key,Value,KeyOfValue,Compare,Alloc>::insert_unique(const boost::shmem::detail::rb_tree<Key,Value,KeyOfValue,Compare,Alloc>::value_type &)' with [ _Ty1=boost::shmem::detail::rb_tree<long,std::pair<const long,PHRunningData>,boost::shmem::detail::select1st<std::pair<const long,PHRunningData>>,boost::shmem::allocator<std::pair<long,PHRunningData>,boost::shmem::detail::basic_named_object_impl<char,boost::shmem::simple_seq_fit<boost::shmem::shared_mutex_family>,boost::shmem::flat_map_index>::segment_manager>,std::allocator<std::pair<const long,PHRunningData>>>::iterator, _Ty2=bool, Key=long, Value=std::pair<const long,PHRunningData>, KeyOfValue=boost::shmem::detail::select1st<std::pair<const long,PHRunningData>>, Compare=boost::shmem::allocator<std::pair<long,PHRunningData>,boost::shmem::detail::basic_named_object_impl<char,boost::shmem::simple_seq_fit<boost::shmem::shared_mutex_family>,boost::shmem::flat_map_index>::segment_manager>, Alloc=std::allocator<std::pair<const long,PHRunningData>> ] C:\boost_1_33_1\boost\shmem\containers\map.hpp(79) : see reference to class template instantiation 'boost::shmem::detail::rb_tree<Key,Value,KeyOfValue,Compare,Alloc>' being compiled with [ Key=long, Value=std::pair<const long,PHRunningData>, KeyOfValue=boost::shmem::detail::select1st<std::pair<const long,PHRunningData>>, Compare=boost::shmem::allocator<std::pair<long,PHRunningData>, boost::shmem::detail::basic_named_object_impl<char,boost::shmem::simple_seq_fit<boost::shmem::shared_mutex_family>,boost::shmem::flat_map_index>::segment_manager>, Alloc=std::allocator<std::pair<const long,PHRunningData>> ] \src\ph\projects\PHLogger\log.cpp(64) : see reference to class template instantiation 'boost::shmem::map<Key,T,Pred>' being compiled with [ Key=long, T=PHRunningData, Pred=boost::shmem::allocator<std::pair<long,PHRunningData>,boost::shmem::detail::basic_named_object_impl<char,boost::shmem::simple_seq_fit<boost::shmem::shared_mutex_family>,boost::shmem::flat_map_index>::segment_manager> ] C:\boost_1_33_1\boost\shmem\containers\detail\tree_func.hpp(542) : error C2064: term does not evaluate to a function taking 2 arguments I would like to know what parameters to call insert with?