id summary reporter owner description type status milestone component version severity resolution keywords cc 6207 shared_lock swap compiler error on clang 3.0 c++11 viboes viboes "While runing the regression test on clang-3.0/2.9 c++11 the following compile error appears {{{ clang-darwin.compile.c++ ../../../bin.v2/libs/thread/test/test_lock_concept.test/clang-darwin-2.9x/debug/threading-multi/test_lock_concept.o In file included from test_lock_concept.cpp:6: In file included from ../../../boost/test/unit_test.hpp:19: In file included from ../../../boost/test/test_tools.hpp:20: In file included from ../../../boost/test/unit_test_log.hpp:21: In file included from ../../../boost/test/tree/observer.hpp:20: In file included from ../../../boost/test/detail/global_typedef.hpp:18: In file included from ../../../boost/test/utils/basic_cstring/basic_cstring.hpp:21: In file included from ../../../boost/test/utils/basic_cstring/bcs_char_traits.hpp:25: In file included from /usr/include/c++/4.2.1/string:46: In file included from /usr/include/c++/4.2.1/bits/char_traits.h:45: /usr/include/c++/4.2.1/bits/stl_algobase.h:99:11: error: 'operator=' is a private member of 'boost::shared_lock' __a = __b; ~~~ ^ ~~~ In file included from test_lock_concept.cpp:6: In file included from ../../../boost/test/unit_test.hpp:20: In file included from ../../../boost/test/unit_test_suite.hpp:21: In file included from ../../../boost/test/tree/test_case_template.hpp:31: In file included from ../../../boost/mpl/for_each.hpp:28: In file included from ../../../boost/utility/value_init.hpp:30: In file included from ../../../boost/swap.hpp:10: ../../../boost/utility/swap.hpp:33:5: note: in instantiation of function template specialization 'std::swap >' requested here swap(left,right); ^ ../../../boost/utility/swap.hpp:51:5: note: in instantiation of function template specialization 'boost_swap_impl::swap_impl >' requested here ::boost_swap_impl::swap_impl(left, right); ^ test_lock_concept.cpp:394:9: note: in instantiation of function template specialization 'boost::swap, boost::shared_lock >' requested here swap(l1,l2); ^ test_lock_concept.cpp:535:44: note: in instantiation of member function 'test_locks_can_be_swapped >::operator()' requested here test_locks_can_be_swapped()(); }}} I think the problem comes from this declaration: #ifndef BOOST_NO_RVALUE_REFERENCES template void swap(shared_lock&& lhs,shared_lock&& rhs) { lhs.swap(rhs); } #else template void swap(shared_lock& lhs,shared_lock& rhs) { lhs.swap(rhs); } #endif As I suspect that the overloading is not working. BTW, all the working swap overloads use the non moving interface. When I use instead template void swap(shared_lock& lhs,shared_lock& rhs) { lhs.swap(rhs); } the test works." Bugs closed Boost 1.49.0 thread Boost 1.48.0 Problem fixed swap viboes