
----- Original Message ----- From: "Ion GaztaƱaga" <igaztanaga@gmail.com> To: <boost@lists.boost.org> Sent: Tuesday, February 17, 2009 11:00 PM Subject: [boost] [move] Library uploaded to sandbox
Hi to all,
I've uploaded a new version of the move emulation library to sandbox. I've put it temporarily in "move_semantics" folder to avoid overwriting current move code.
<snip>
I've invested some precious time in the library and testing different approaches to see if it plays well with containers but I would like to hear some comments on whether the direction is acceptable and if I should spend more time on it. If someone else with more time wants to continue the library, please do it! ;-)
Hi, The test for the move library and the intrusive constainers pass on gcc-3.4.4 under cygwin, but I have some trouble chile compiling interprocess. I had no problems while compiling the 1.38.0. It seems that the fact to declare the variable m_nOwner interprocess_recursive_mutex.hpp volatile break on this compiler. volatile detail::OS_systemwide_thread_id_t m_nOwner; On 1.38.0 detail::OS_systemwide_thread_id_t m_nOwner; detail::OS_systemwide_thread_id_t th_id = detail::get_current_systemwide_thread_id(); 43 if(detail::equal_systemwide_thread_id(th_id, m_nOwner)){ The move semantincs one volatile detail::OS_systemwide_thread_id_t m_nOwner; const detail::OS_systemwide_thread_id_t thr_id = detail::get_current_systemwide_thread_id(); 42 const detail::OS_systemwide_thread_id_t old_id = m_nOwner; if(detail::equal_systemwide_thread_id(thr_id , old_id)){ Any ideas? Best, Vicente _______________ gcc.compile.c++ ../../../bin.v2/libs/interprocess/test/flat_tree_test.test/gcc-3.4.4/debug/threading-multi/flat_tree_test.o "g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -mthreads -DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB=1 -I"../../.." -I"/home/Vicente/boost/boost_1_38_0" -I"/home/Vicente/boost/sandbox/boost.move_semantics" -c -o "C:\cygwin\home\Vicente\boost\sandbox\boost.move_semantics\bin.v2\libs\interprocess\test\flat_tree_test.test\gcc-3.4.4\debug\threading-multi\flat_tree_test.o" "flat_tree_test.cpp" In file included from ../../../boost/interprocess/sync/interprocess_recursive_mutex.hpp:122, from ../../../boost/interprocess/sync/mutex_family.hpp:22, from ../../../boost/interprocess/detail/managed_memory_impl.hpp:23, from ../../../boost/interprocess/managed_shared_memory.hpp:21, from flat_tree_test.cpp:13: ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp: In member function `void boost::interprocess::interprocess_recursive_mutex::lock()': ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:43: error: no matching function for call to `boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(volatile boost::interprocess::detail::OS_systemwide_thread_id_t&)' ../../../boost/interprocess/detail/os_thread_functions.hpp:81: note: candidates are: boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(const boost::interprocess::detail::OS_systemwide_thread_id_t&) ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:53: error: passing `volatile boost::interprocess::detail::OS_systemwide_thread_id_t' as `this' argument of `boost::interprocess::detail::OS_systemwide_thread_id_t& boost::interprocess::detail::OS_systemwide_thread_id_t::operator=(const boost::interprocess::detail::OS_systemwide_thread_id_t&)' discards qualifiers ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp: In member function `bool boost::interprocess::interprocess_recursive_mutex::try_lock()': ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:61: error: no matching function for call to `boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(volatile boost::interprocess::detail::OS_systemwide_thread_id_t&)' ../../../boost/interprocess/detail/os_thread_functions.hpp:81: note: candidates are: boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(const boost::interprocess::detail::OS_systemwide_thread_id_t&) ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:71: error: passing `volatile boost::interprocess::detail::OS_systemwide_thread_id_t' as `this' argument of `boost::interprocess::detail::OS_systemwide_thread_id_t& boost::interprocess::detail::OS_systemwide_thread_id_t::operator=(const boost::interprocess::detail::OS_systemwide_thread_id_t&)' discards qualifiers ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp: In member function `bool boost::interprocess::interprocess_recursive_mutex::timed_lock(const boost::posix_time::ptime&)': ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:85: error: no matching function for call to `boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(volatile boost::interprocess::detail::OS_systemwide_thread_id_t&)' ../../../boost/interprocess/detail/os_thread_functions.hpp:81: note: candidates are: boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(const boost::interprocess::detail::OS_systemwide_thread_id_t&) ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:95: error: passing `volatile boost::interprocess::detail::OS_systemwide_thread_id_t' as `this' argument of `boost::interprocess::detail::OS_systemwide_thread_id_t& boost::interprocess::detail::OS_systemwide_thread_id_t::operator=(const boost::interprocess::detail::OS_systemwide_thread_id_t&)' discards qualifiers ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp: In member function `void boost::interprocess::interprocess_recursive_mutex::unlock()': ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:104: error: no matching function for call to `boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(volatile boost::interprocess::detail::OS_systemwide_thread_id_t&)' ../../../boost/interprocess/detail/os_thread_functions.hpp:81: note: candidates are: boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(const boost::interprocess::detail::OS_systemwide_thread_id_t&) ../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:110: error: passing `volatile boost::interprocess::detail::OS_systemwide_thread_id_t' as `this' argument of `boost::interprocess::detail::OS_systemwide_thread_id_t& boost::interprocess::detail::OS_systemwide_thread_id_t::operator=(const boost::interprocess::detail::OS_systemwide_thread_id_t&)' discards qualifiers ...failed gcc.compile.c++ ../../../bin.v2/libs/interprocess/test/flat_tree_test.test/gcc-3.4.4/debug/threading-multi/flat_tree_test.o... ...failed updating 1 target...