id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 10011,segment_manager::find( unique_instance_t* ) fails to compile,Michael Smolensky ,Ion Gaztañaga,"When called directly (not from managed_memory_impl), segment_manager::find( unique_instance_t* ) fails to compile. Both v 1.53, 1.55, and 1.55b have this issue. The fix would be either: - to remove segment_manager::find( unique_instance_t* ) and replace find( const CharType* ) with find( char_ptr_holder_t ) or - to fix priv_find_impl( unique_instance* ): in line 742 replace name with typeid(T).name() void *ret = priv_generic_find(name, m_header.m_unique_index, table, size, is_intrusive_t(), lock); with void *ret = priv_generic_find(typeid(T).name(), m_header.m_unique_index, table, size, is_intrusive_t(), lock); Below is a test program and VC11 error: {{{ #include #include #include #include #include #include int main() { using namespace boost::interprocess; typedef simple_seq_fit< null_mutex_family > AllocAlgo; typedef segment_manager< char, AllocAlgo, flat_map_index > MemManager; shared_memory_object sh_mem( create_only, ""test"", read_write ); sh_mem.truncate( 1000 ); mapped_region mapping( sh_mem, read_write ); MemManager* mem_mgr = new( mapping.get_address() ) MemManager( 1000 ); mem_mgr->construct< int >( unique_instance ); int* p = mem_mgr->find< int >( unique_instance ).first; return 0; } }}} 1> main.cpp 1>c:\dev\exb++.libs\boost\1.55.0b0\common\include\boost\interprocess\segment_manager.hpp(430): error C2664: 'std::pair<_Ty1,_Ty2> boost::interprocess::segment_manager::priv_find_impl(const CharType *,bool)' : cannot convert parameter 1 from 'const boost::interprocess::ipcdetail::unique_instance_t *' to 'const char *' 1> with 1> [ 1> _Ty1=int *, 1> _Ty2=unsigned int, 1> CharType=char, 1> MemoryAlgorithm=AllocAlgo, 1> IndexType=boost::interprocess::flat_map_index, 1> T=int 1> ] 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1> c:\prj\boostinterprocess\main.cpp(21) : see reference to function template instantiation 'std::pair<_Ty1,_Ty2> boost::interprocess::segment_manager::find(const boost::interprocess::ipcdetail::unique_instance_t *)' being compiled 1> with 1> [ 1> _Ty1=int *, 1> _Ty2=unsigned int, 1> CharType=char, 1> MemoryAlgorithm=AllocAlgo, 1> IndexType=boost::interprocess::flat_map_index 1> ] 1> c:\prj\boostinterprocess\main.cpp(21) : see reference to function template instantiation 'std::pair<_Ty1,_Ty2> boost::interprocess::segment_manager::find(const boost::interprocess::ipcdetail::unique_instance_t *)' being compiled 1> with 1> [ 1> _Ty1=int *, 1> _Ty2=unsigned int, 1> CharType=char, 1> MemoryAlgorithm=AllocAlgo, 1> IndexType=boost::interprocess::flat_map_index 1> ] ",Bugs,closed,To Be Determined,interprocess,Boost 1.55.0,Problem,fixed,,