diff --git a/doc/compliance.qbk b/doc/compliance.qbk index c7d38f6c..449e3d5c 100644 --- a/doc/compliance.qbk +++ b/doc/compliance.qbk @@ -5,12 +5,12 @@ http://www.boost.org/LICENSE_1_0.txt). ] -[section:compliance Compliance and Extension] +[section:compliance Conformace and Extension] [section:cpp11 C++11 standard Thread library] -[table Compliance C++11 standard +[table C++11 standard Conformace [[Section] [Description] [Status] [Comments] [Ticket]] [[30] [Thread support library] [Partial] [-] [-]] [[30.1] [General] [-] [-] [-]] @@ -69,7 +69,7 @@ [[30.6.6] [Class template future] [Partial] [allocator,unique_future is the closest to future, renamed in V2] [#6228]] [[30.6.7] [Class template shared_future] [Partial] [allocator] [#6228]] [[30.6.8] [Function template async] [No] [async] [#4710]] - [[30.6.8] [Class template packaged_task] [Partial] [move] [#yyyy]] + [[30.6.9] [Class template packaged_task] [Partial] [move] [#yyyy]] ] [/ @@ -89,7 +89,7 @@ [section:shared Shared Locking extensions] -[table Compliance with Howard's Shared Locking proposal +[table Howard's Shared Locking Proposal Conformace [[Section] [Description] [Status] [Comments]] [[X] [Shared Locking] [Yes] [Needs `BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSION]] [[X.1] [Shared Lockables Concepts] [Yes] [ - ]] diff --git a/doc/emulations.qbk b/doc/emulations.qbk index e7dde4c0..e79e3a10 100644 --- a/doc/emulations.qbk +++ b/doc/emulations.qbk @@ -66,7 +66,7 @@ To make the code portable Boost.Thread uses a macro BOOST_MOVE_RVALUE that can b thread mkth() { - return BOOST_EXPLICIT_MOVE(thread(f)); + return BOOST_THREAD_MAKE_RV_REF(thread(f)); } See the Boost.Move documentation for a complete description on how to declare new Movable classes and its limitations. diff --git a/example/condition.cpp b/example/condition.cpp index 7430e462..52475d6c 100644 --- a/example/condition.cpp +++ b/example/condition.cpp @@ -1,7 +1,7 @@ // Copyright (C) 2001-2003 // William E. Kempf // -// Distributed under the Boost Software License, Version 1.0. (See accompanying +// Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include diff --git a/example/monitor.cpp b/example/monitor.cpp index 0a7383fb..ff02f5b6 100644 --- a/example/monitor.cpp +++ b/example/monitor.cpp @@ -1,7 +1,7 @@ // Copyright (C) 2001-2003 // William E. Kempf // -// Distributed under the Boost Software License, Version 1.0. (See accompanying +// Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include @@ -89,6 +89,7 @@ private: template void do_test(M* dummy=0) { + (void)dummy; typedef buffer_t buffer_type; buffer_type::get_buffer(); boost::thread thrd1(&buffer_type::do_receiver_thread); diff --git a/example/once.cpp b/example/once.cpp index f4817cf7..3de3c45b 100644 --- a/example/once.cpp +++ b/example/once.cpp @@ -28,7 +28,7 @@ void thread_proc() boost::call_once(&init, once); } -int main(int argc, char* argv[]) +int main() { boost::thread_group threads; for (int i=0; i<5; ++i) diff --git a/example/shared_monitor.cpp b/example/shared_monitor.cpp index 64932ff8..bed93bfd 100644 --- a/example/shared_monitor.cpp +++ b/example/shared_monitor.cpp @@ -128,7 +128,7 @@ int main() v.push_back(&thr2); boost::thread thr3(test_w); v.push_back(&thr3); - for (int i = 0; i < v.size(); ++i) + for (std::size_t i = 0; i < v.size(); ++i) v[i]->join(); Clock::time_point t1 = Clock::now(); std::cout << sec(t1-t0) << '\n'; diff --git a/example/starvephil.cpp b/example/starvephil.cpp index 0ef2e0d3..034ad0b7 100644 --- a/example/starvephil.cpp +++ b/example/starvephil.cpp @@ -1,7 +1,7 @@ // Copyright (C) 2001-2003 // William E. Kempf // -// Distributed under the Boost Software License, Version 1.0. (See accompanying +// Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include @@ -164,7 +164,7 @@ private: void* _param; }; -int main(int argc, char* argv[]) +int main() { boost::thread thrd_chef(&chef); phil p[] = { phil(0), phil(1), phil(2), phil(3), phil(4) }; diff --git a/example/thread.cpp b/example/thread.cpp index c21a3b5e..6acbd6da 100644 --- a/example/thread.cpp +++ b/example/thread.cpp @@ -1,7 +1,7 @@ // Copyright (C) 2001-2003 // William E. Kempf // -// Distributed under the Boost Software License, Version 1.0. (See accompanying +// Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include @@ -25,7 +25,7 @@ struct thread_alarm int m_secs; }; -int main(int argc, char* argv[]) +int main() { int secs = 5; std::cout << "setting alarm for 5 seconds..." << std::endl; diff --git a/example/thread_group.cpp b/example/thread_group.cpp index 232776dc..fd11a57c 100644 --- a/example/thread_group.cpp +++ b/example/thread_group.cpp @@ -1,7 +1,7 @@ // Copyright (C) 2001-2003 // William E. Kempf // -// Distributed under the Boost Software License, Version 1.0. (See accompanying +// Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include @@ -16,7 +16,7 @@ void increment_count() std::cout << "count = " << ++count << std::endl; } -int main(int argc, char* argv[]) +int main() { boost::thread_group threads; for (int i = 0; i < 10; ++i) diff --git a/example/tss.cpp b/example/tss.cpp index f867a918..0b8a2b32 100644 --- a/example/tss.cpp +++ b/example/tss.cpp @@ -1,7 +1,7 @@ // Copyright (C) 2001-2003 // William E. Kempf // -// Distributed under the Boost Software License, Version 1.0. (See accompanying +// Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include @@ -27,7 +27,7 @@ void thread_proc() } } -int main(int argc, char* argv[]) +int main() { boost::thread_group threads; for (int i=0; i<5; ++i) diff --git a/example/xtime.cpp b/example/xtime.cpp index a9b19339..a9f10c35 100644 --- a/example/xtime.cpp +++ b/example/xtime.cpp @@ -1,13 +1,13 @@ // Copyright (C) 2001-2003 // William E. Kempf // -// Distributed under the Boost Software License, Version 1.0. (See accompanying +// Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include -int main(int argc, char* argv[]) +int main() { boost::xtime xt; boost::xtime_get(&xt, boost::TIME_UTC); diff --git a/include/boost/thread/detail/move.hpp b/include/boost/thread/detail/move.hpp index fff01e9e..96a2f944 100644 --- a/include/boost/thread/detail/move.hpp +++ b/include/boost/thread/detail/move.hpp @@ -11,11 +11,12 @@ #include #include #include +#include #endif #include -#include +//#include namespace boost { @@ -62,15 +63,53 @@ namespace boost } #if ! defined BOOST_NO_RVALUE_REFERENCES -//&& ! defined BOOST_NO_DELETED_FUNCTIONS -#define BOOST_EXPLICIT_MOVE(RVALUE) RVALUE +#define BOOST_THREAD_RV_REF(TYPE) BOOST_RV_REF(TYPE) +#define BOOST_THREAD_MAKE_RV_REF(RVALUE) RVALUE + + #elif ! defined BOOST_NO_RVALUE_REFERENCES && defined BOOST_MSVC -#define BOOST_EXPLICIT_MOVE(RVALUE) RVALUE +#define BOOST_THREAD_RV_REF(TYPE) BOOST_RV_REF(TYPE) +#define BOOST_THREAD_MAKE_RV_REF(RVALUE) RVALUE #else -#define BOOST_EXPLICIT_MOVE(RVALUE) RVALUE.move() + +namespace boost +{ +namespace detail +{ + +#if defined BOOST_THREAD_USES_MOVE +#define BOOST_THREAD_RV_REF(TYPE) BOOST_RV_REF(TYPE) +#else +#define BOOST_THREAD_RV_REF(TYPE) thread_move_t +#endif + template + BOOST_THREAD_RV_REF(typename ::boost::remove_cv::type>::type) + make_rv_ref(T v) BOOST_NOEXCEPT + { + return (BOOST_THREAD_RV_REF(typename ::boost::remove_cv::type>::type))(v); + } +// template +// BOOST_THREAD_RV_REF(typename ::boost::remove_cv::type>::type) +// make_rv_ref(T &v) BOOST_NOEXCEPT +// { +// return (BOOST_THREAD_RV_REF(typename ::boost::remove_cv::type>::type))(v); +// } +// template +// const BOOST_THREAD_RV_REF(typename ::boost::remove_cv::type>::type) +// make_rv_ref(T const&v) BOOST_NOEXCEPT +// { +// return (const BOOST_THREAD_RV_REF(typename ::boost::remove_cv::type>::type))(v); +// } +} +} + +#define BOOST_THREAD_MAKE_RV_REF(RVALUE) RVALUE.move() +//#define BOOST_THREAD_MAKE_RV_REF(RVALUE) boost::detail::make_rv_ref(RVALUE) #endif -#include + + +//#include #endif diff --git a/include/boost/thread/detail/thread.hpp b/include/boost/thread/detail/thread.hpp index 4a79bc96..b8d09b13 100644 --- a/include/boost/thread/detail/thread.hpp +++ b/include/boost/thread/detail/thread.hpp @@ -11,11 +11,7 @@ #ifndef BOOST_NO_IOSTREAM #include #endif -#if defined BOOST_THREAD_USES_MOVE -#include -#else #include -#endif #include #include #include diff --git a/include/boost/thread/locks.hpp b/include/boost/thread/locks.hpp index 003654ec..1d77833e 100644 --- a/include/boost/thread/locks.hpp +++ b/include/boost/thread/locks.hpp @@ -383,7 +383,8 @@ namespace boost } BOOST_THREAD_EXPLICIT_LOCK_CONVERSION unique_lock(boost::rv >& other); - operator ::boost::rv >&() + //operator boost::rv >& + operator boost::rv >&() { return *static_cast< ::boost::rv >* >(this); } @@ -1948,7 +1949,7 @@ namespace boost { if(source) { - *source=BOOST_EXPLICIT_MOVE(upgrade_lock(::boost::move(exclusive))); + *source=BOOST_THREAD_MAKE_RV_REF(upgrade_lock(::boost::move(exclusive))); } } diff --git a/include/boost/thread/reverse_lock.hpp b/include/boost/thread/reverse_lock.hpp index cae14b3f..9b592ac2 100644 --- a/include/boost/thread/reverse_lock.hpp +++ b/include/boost/thread/reverse_lock.hpp @@ -40,7 +40,7 @@ namespace boost { if (mtx) { mtx->lock(); - m = BOOST_EXPLICIT_MOVE(Lock(*mtx, adopt_lock)); + m = BOOST_THREAD_MAKE_RV_REF(Lock(*mtx, adopt_lock)); } } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 25595e4a..1c4eadae 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -33,7 +33,7 @@ project darwin:-Wextra darwin:-pedantic darwin:-Wno-long-long - #darwin:-ansi + #darwin:-ansi # doesn't work for 4.1.2 darwin:-fpermissive #pathscale:-Wextra @@ -44,7 +44,7 @@ project clang:-pedantic clang:-Wno-long-long clang:-ansi - #clang:-fpermissive + #clang:-fpermissive # doesn't work gcc-mingw-4.4.0:-fdiagnostics-show-option gcc-mingw-4.5.0:-fdiagnostics-show-option @@ -53,8 +53,10 @@ project gcc-mingw-4.7.0:-fdiagnostics-show-option gcc-mingw-4.8.0:-fdiagnostics-show-option - #darwin-4.6.2:-Wno-delete-non-virtual-dtor - #darwin-4.7.0:-Wno-delete-non-virtual-dtor + darwin-4.6.2:-ansi + #darwin-4.6.2:-Wno-delete-non-virtual-dtor # doesn't work + darwin-4.7.0:-ansi + darwin-4.7.0:-Wno-delete-non-virtual-dtor #clang-2.8:-Wno-delete-non-virtual-dtor #clang-2.8:-Wno-unused-function @@ -463,11 +465,16 @@ rule thread-compile-fail-V2 ( sources : reqs * : name ) [ thread-run2 ./threads/thread/members/swap_pass.cpp : thread__swap_p ] [ thread-run2 ./threads/thread/non_members/swap_pass.cpp : swap_threads_p ] [ thread-run2 ./threads/thread/static/hardware_concurrency_pass.cpp : thread__hardware_concurrency_p ] - #[ thread-run2 ./threads/container/thread_vector_pass.cpp : thread_vector_p ] - #[ thread-run2 ./threads/container/thread_ptr_list_pass.cpp : thread_ptr_list_p ] ; - #explicit examples ; + #explicit ts_container ; + test-suite ts_container + : + [ thread-run2 ./threads/container/thread_vector_pass.cpp : container__thread_vector_p ] + [ thread-run2 ./threads/container/thread_ptr_list_pass.cpp : container__thread_ptr_list_p ] + ; + + explicit examples ; test-suite ts_examples : [ thread-run ../example/monitor.cpp ] diff --git a/test/sync/futures/future/dtor_pass.cpp b/test/sync/futures/future/dtor_pass.cpp index dbcfe47f..cdfb4774 100755 --- a/test/sync/futures/future/dtor_pass.cpp +++ b/test/sync/futures/future/dtor_pass.cpp @@ -37,7 +37,7 @@ int main() { boost::promise p(boost::allocator_arg, test_allocator()); BOOST_TEST(test_alloc_base::count == 1); - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); } @@ -51,7 +51,7 @@ int main() { boost::promise p(boost::allocator_arg, test_allocator()); BOOST_TEST(test_alloc_base::count == 1); - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); } @@ -65,7 +65,7 @@ int main() { boost::promise p(boost::allocator_arg, test_allocator()); BOOST_TEST(test_alloc_base::count == 1); - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); } @@ -79,7 +79,7 @@ int main() boost::future f; { boost::promise p; - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(f.valid()); } BOOST_TEST(f.valid()); @@ -89,7 +89,7 @@ int main() boost::future f; { boost::promise p; - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(f.valid()); } BOOST_TEST(f.valid()); @@ -99,7 +99,7 @@ int main() boost::future f; { boost::promise p; - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(f.valid()); } BOOST_TEST(f.valid()); diff --git a/test/sync/futures/future/move_assign_pass.cpp b/test/sync/futures/future/move_assign_pass.cpp index c76d6f85..afa44e69 100755 --- a/test/sync/futures/future/move_assign_pass.cpp +++ b/test/sync/futures/future/move_assign_pass.cpp @@ -31,7 +31,7 @@ int main() { typedef int T; boost::promise p; - boost::future f0 = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f0 = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::future f; f = boost::move(f0); BOOST_TEST(!f0.valid()); @@ -48,7 +48,7 @@ int main() { typedef int& T; boost::promise p; - boost::future f0 = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f0 = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::future f; f = boost::move(f0); BOOST_TEST(!f0.valid()); @@ -65,7 +65,7 @@ int main() { typedef void T; boost::promise p; - boost::future f0 = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f0 = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::future f; f = boost::move(f0); BOOST_TEST(!f0.valid()); diff --git a/test/sync/futures/future/move_ctor_pass.cpp b/test/sync/futures/future/move_ctor_pass.cpp index ef9a990e..fe91f999 100755 --- a/test/sync/futures/future/move_ctor_pass.cpp +++ b/test/sync/futures/future/move_ctor_pass.cpp @@ -30,7 +30,7 @@ int main() { typedef int T; boost::promise p; - boost::future f0 = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f0 = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::future f = boost::move(f0); BOOST_TEST(!f0.valid()); BOOST_TEST(f.valid()); @@ -45,7 +45,7 @@ int main() { typedef int& T; boost::promise p; - boost::future f0 = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f0 = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::future f = boost::move(f0); BOOST_TEST(!f0.valid()); BOOST_TEST(f.valid()); @@ -60,7 +60,7 @@ int main() { typedef void T; boost::promise p; - boost::future f0 = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f0 = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::future f = boost::move(f0); BOOST_TEST(!f0.valid()); BOOST_TEST(f.valid()); diff --git a/test/sync/futures/future/share_pass.cpp b/test/sync/futures/future/share_pass.cpp index 4703f569..1327a84f 100644 --- a/test/sync/futures/future/share_pass.cpp +++ b/test/sync/futures/future/share_pass.cpp @@ -29,7 +29,7 @@ int main() { typedef int T; boost::promise p; - boost::future f0 = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f0 = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::shared_future sf = f0.share(); boost::shared_future f = sf; BOOST_TEST(!f0.valid()); @@ -46,7 +46,7 @@ int main() { typedef int& T; boost::promise p; - boost::future f0 = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f0 = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::shared_future sf = f0.share(); boost::shared_future f = sf; BOOST_TEST(!f0.valid()); @@ -63,7 +63,7 @@ int main() { typedef void T; boost::promise p; - boost::future f0 = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f0 = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::shared_future sf = f0.share(); boost::shared_future f = sf; BOOST_TEST(!f0.valid()); diff --git a/test/sync/futures/packaged_task/alloc_ctor_pass.cpp b/test/sync/futures/packaged_task/alloc_ctor_pass.cpp index 1bb12b53..7e00f69f 100644 --- a/test/sync/futures/packaged_task/alloc_ctor_pass.cpp +++ b/test/sync/futures/packaged_task/alloc_ctor_pass.cpp @@ -113,10 +113,10 @@ int main() { { boost::packaged_task p(boost::allocator_arg, - test_allocator(), BOOST_EXPLICIT_MOVE(A(5))); + test_allocator(), BOOST_THREAD_MAKE_RV_REF(A(5))); BOOST_TEST(test_alloc_base::count > 0); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); @@ -132,7 +132,7 @@ int main() test_allocator(), a); BOOST_TEST(test_alloc_base::count > 0); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); @@ -148,7 +148,7 @@ int main() test_allocator(), a); BOOST_TEST(test_alloc_base::count > 0); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); @@ -161,7 +161,7 @@ int main() test_allocator(), fct); BOOST_TEST(test_alloc_base::count > 0); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); @@ -171,7 +171,7 @@ int main() test_allocator(), &lfct); BOOST_TEST(test_alloc_base::count > 0); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); diff --git a/test/sync/futures/packaged_task/dtor_pass.cpp b/test/sync/futures/packaged_task/dtor_pass.cpp index d45f0fe4..260beb0a 100755 --- a/test/sync/futures/packaged_task/dtor_pass.cpp +++ b/test/sync/futures/packaged_task/dtor_pass.cpp @@ -50,7 +50,7 @@ int main() { { boost::packaged_task p(A(5)); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::thread(func, boost::move(p)).detach(); try { @@ -64,7 +64,7 @@ int main() } { boost::packaged_task p(A(5)); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::thread(func2, boost::move(p)).detach(); BOOST_TEST(f.get() == 5.0); } diff --git a/test/sync/futures/packaged_task/func_ctor_pass.cpp b/test/sync/futures/packaged_task/func_ctor_pass.cpp index ca469363..f8389ab6 100644 --- a/test/sync/futures/packaged_task/func_ctor_pass.cpp +++ b/test/sync/futures/packaged_task/func_ctor_pass.cpp @@ -99,9 +99,9 @@ int A::n_copies = 0; int main() { { - boost::packaged_task p(BOOST_EXPLICIT_MOVE(A(5))); + boost::packaged_task p(BOOST_THREAD_MAKE_RV_REF(A(5))); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); @@ -114,7 +114,7 @@ int main() A a(5); boost::packaged_task p(a); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); @@ -128,7 +128,7 @@ int main() const A a(5); boost::packaged_task p(a); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); @@ -138,7 +138,7 @@ int main() { boost::packaged_task p(fct); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); @@ -146,7 +146,7 @@ int main() { boost::packaged_task p(&lfct); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); diff --git a/test/sync/futures/packaged_task/get_future_pass.cpp b/test/sync/futures/packaged_task/get_future_pass.cpp index 57f3e7d1..313cb9cb 100755 --- a/test/sync/futures/packaged_task/get_future_pass.cpp +++ b/test/sync/futures/packaged_task/get_future_pass.cpp @@ -39,17 +39,17 @@ int main() { { boost::packaged_task p(A(5)); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); } { boost::packaged_task p(A(5)); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); try { - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -61,7 +61,7 @@ int main() boost::packaged_task p; try { - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) diff --git a/test/sync/futures/packaged_task/member_swap_pass.cpp b/test/sync/futures/packaged_task/member_swap_pass.cpp index 445e1274..82de491f 100755 --- a/test/sync/futures/packaged_task/member_swap_pass.cpp +++ b/test/sync/futures/packaged_task/member_swap_pass.cpp @@ -51,7 +51,7 @@ int main() p.swap(p0); BOOST_TEST(!p0.valid()); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); diff --git a/test/sync/futures/packaged_task/move_assign_pass.cpp b/test/sync/futures/packaged_task/move_assign_pass.cpp index 2e4d1f81..67443946 100755 --- a/test/sync/futures/packaged_task/move_assign_pass.cpp +++ b/test/sync/futures/packaged_task/move_assign_pass.cpp @@ -44,7 +44,7 @@ int main() p = boost::move(p0); BOOST_TEST(!p0.valid()); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); // p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); diff --git a/test/sync/futures/packaged_task/move_ctor_pass.cpp b/test/sync/futures/packaged_task/move_ctor_pass.cpp index 99dae5d3..c3234fec 100755 --- a/test/sync/futures/packaged_task/move_ctor_pass.cpp +++ b/test/sync/futures/packaged_task/move_ctor_pass.cpp @@ -42,7 +42,7 @@ int main() boost::packaged_task p = boost::move(p0); BOOST_TEST(!p0.valid()); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); diff --git a/test/sync/futures/packaged_task/non_member_swap_pass.cpp b/test/sync/futures/packaged_task/non_member_swap_pass.cpp index 87dad2d5..4758a2bf 100755 --- a/test/sync/futures/packaged_task/non_member_swap_pass.cpp +++ b/test/sync/futures/packaged_task/non_member_swap_pass.cpp @@ -42,7 +42,7 @@ int main() p.swap(p0); BOOST_TEST(!p0.valid()); BOOST_TEST(p.valid()); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); diff --git a/test/sync/futures/packaged_task/operator_pass.cpp b/test/sync/futures/packaged_task/operator_pass.cpp index 097e7756..8dea72e6 100644 --- a/test/sync/futures/packaged_task/operator_pass.cpp +++ b/test/sync/futures/packaged_task/operator_pass.cpp @@ -89,13 +89,13 @@ int main() { { boost::packaged_task p(A(5)); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::thread(func0, boost::move(p)).detach(); BOOST_TEST(f.get() == 5.0); } { boost::packaged_task p(A(5)); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::thread(func1, boost::move(p)).detach(); try { @@ -110,7 +110,7 @@ int main() } { boost::packaged_task p(A(5)); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); boost::thread t(func2, boost::move(p)); BOOST_TEST(f.get() == 5.0); t.join(); diff --git a/test/sync/futures/packaged_task/reset_pass.cpp b/test/sync/futures/packaged_task/reset_pass.cpp index 30e51233..8128a32d 100644 --- a/test/sync/futures/packaged_task/reset_pass.cpp +++ b/test/sync/futures/packaged_task/reset_pass.cpp @@ -47,7 +47,7 @@ int main() { { boost::packaged_task p(A(5)); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); //p(3, 'a'); p(); BOOST_TEST(f.get() == 5.0); diff --git a/test/sync/futures/promise/alloc_ctor_pass.cpp b/test/sync/futures/promise/alloc_ctor_pass.cpp index 617aa865..a4de275c 100644 --- a/test/sync/futures/promise/alloc_ctor_pass.cpp +++ b/test/sync/futures/promise/alloc_ctor_pass.cpp @@ -31,7 +31,7 @@ int main() { boost::promise p(boost::allocator_arg, test_allocator()); BOOST_TEST(test_alloc_base::count == 1); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); } @@ -39,7 +39,7 @@ int main() { boost::promise p(boost::allocator_arg, test_allocator()); BOOST_TEST(test_alloc_base::count == 1); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); } @@ -47,7 +47,7 @@ int main() { boost::promise p(boost::allocator_arg, test_allocator()); BOOST_TEST(test_alloc_base::count == 1); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); } diff --git a/test/sync/futures/promise/default_pass.cpp b/test/sync/futures/promise/default_pass.cpp index 9423a295..0380ca4c 100755 --- a/test/sync/futures/promise/default_pass.cpp +++ b/test/sync/futures/promise/default_pass.cpp @@ -28,18 +28,18 @@ int main() { boost::promise p; - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(f.valid()); } { boost::promise p; - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(f.valid()); } { boost::promise p; std::cout << __LINE__ << std::endl; - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); std::cout << __LINE__ << std::endl; BOOST_TEST(f.valid()); } diff --git a/test/sync/futures/promise/dtor_pass.cpp b/test/sync/futures/promise/dtor_pass.cpp index 41fcdfeb..7752226f 100755 --- a/test/sync/futures/promise/dtor_pass.cpp +++ b/test/sync/futures/promise/dtor_pass.cpp @@ -30,7 +30,7 @@ int main() boost::future f; { boost::promise p; - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); p.set_value(3); } BOOST_TEST(f.get() == 3); @@ -40,7 +40,7 @@ int main() boost::future f; { boost::promise p; - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); } try { @@ -59,7 +59,7 @@ int main() boost::future f; { boost::promise p; - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); p.set_value(i); } BOOST_TEST(&f.get() == &i); @@ -69,7 +69,7 @@ int main() boost::future f; { boost::promise p; - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); } try { @@ -87,7 +87,7 @@ int main() boost::future f; { boost::promise p; - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); p.set_value(); } f.get(); @@ -98,7 +98,7 @@ int main() boost::future f; { boost::promise p; - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); } try { diff --git a/test/sync/futures/promise/get_future_pass.cpp b/test/sync/futures/promise/get_future_pass.cpp index 15f5f8f5..59b37d9a 100755 --- a/test/sync/futures/promise/get_future_pass.cpp +++ b/test/sync/futures/promise/get_future_pass.cpp @@ -27,16 +27,16 @@ int main() { { boost::promise p; - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); p.set_value(105.5); BOOST_TEST(f.get() == 105.5); } { boost::promise p; - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); try { - f = BOOST_EXPLICIT_MOVE(p.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -49,7 +49,7 @@ int main() boost::promise p0 = boost::move(p); try { - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) diff --git a/test/sync/futures/promise/move_assign_pass.cpp b/test/sync/futures/promise/move_assign_pass.cpp index ca7ac214..5e269b60 100755 --- a/test/sync/futures/promise/move_assign_pass.cpp +++ b/test/sync/futures/promise/move_assign_pass.cpp @@ -39,12 +39,12 @@ int main() BOOST_TEST(test_alloc_base::count == 2); p = boost::move(p0); BOOST_TEST(test_alloc_base::count == 1); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -61,12 +61,12 @@ int main() BOOST_TEST(test_alloc_base::count == 2); p = boost::move(p0); BOOST_TEST(test_alloc_base::count == 1); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -82,12 +82,12 @@ int main() BOOST_TEST(test_alloc_base::count == 2); p = boost::move(p0); BOOST_TEST(test_alloc_base::count == 1); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -103,11 +103,11 @@ int main() boost::promise p0; boost::promise p; p = boost::move(p0); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(f.valid()); try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -120,11 +120,11 @@ int main() boost::promise p0; boost::promise p; p = boost::move(p0); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(f.valid()); try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -136,11 +136,11 @@ int main() boost::promise p0; boost::promise p; p = boost::move(p0); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(f.valid()); try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) diff --git a/test/sync/futures/promise/move_ctor_pass.cpp b/test/sync/futures/promise/move_ctor_pass.cpp index 41c3f595..c027582e 100755 --- a/test/sync/futures/promise/move_ctor_pass.cpp +++ b/test/sync/futures/promise/move_ctor_pass.cpp @@ -37,14 +37,14 @@ int main() boost::promise p(boost::move(p0)); BOOST_TEST(test_alloc_base::count == 1); std::cout << __LINE__ << std::endl; - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); std::cout << __LINE__ << std::endl; BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); std::cout << __LINE__ << std::endl; try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -60,12 +60,12 @@ int main() boost::promise p0(boost::allocator_arg, test_allocator()); boost::promise p(boost::move(p0)); BOOST_TEST(test_alloc_base::count == 1); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -79,12 +79,12 @@ int main() boost::promise p0(boost::allocator_arg, test_allocator()); boost::promise p(boost::move(p0)); BOOST_TEST(test_alloc_base::count == 1); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(test_alloc_base::count == 1); BOOST_TEST(f.valid()); try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -99,13 +99,13 @@ int main() boost::promise p0; boost::promise p(boost::move(p0)); std::cout << __LINE__ << std::endl; - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); std::cout << __LINE__ << std::endl; BOOST_TEST(f.valid()); std::cout << __LINE__ << std::endl; try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -118,11 +118,11 @@ int main() { boost::promise p0; boost::promise p(boost::move(p0)); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(f.valid()); try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) @@ -133,11 +133,11 @@ int main() { boost::promise p0; boost::promise p(boost::move(p0)); - boost::future f = BOOST_EXPLICIT_MOVE(p.get_future()); + boost::future f = BOOST_THREAD_MAKE_RV_REF(p.get_future()); BOOST_TEST(f.valid()); try { - f = BOOST_EXPLICIT_MOVE(p0.get_future()); + f = BOOST_THREAD_MAKE_RV_REF(p0.get_future()); BOOST_TEST(false); } catch (const boost::future_error& e) diff --git a/test/sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp b/test/sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp index d7743cef..b3348f70 100755 --- a/test/sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp +++ b/test/sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp @@ -40,14 +40,14 @@ int main() { boost::shared_lock lk1; - lk1 = BOOST_EXPLICIT_MOVE(boost::shared_lock(m0)); + lk1 = BOOST_THREAD_MAKE_RV_REF(boost::shared_lock(m0)); BOOST_TEST(lk1.mutex() == &m0); BOOST_TEST(lk1.owns_lock() == true); } { boost::unique_lock lk0(m0); boost::shared_lock lk1(m1); - lk1 = BOOST_EXPLICIT_MOVE(boost::shared_lock(boost::move(lk0))); + lk1 = BOOST_THREAD_MAKE_RV_REF(boost::shared_lock(boost::move(lk0))); BOOST_TEST(lk1.mutex() == &m0); BOOST_TEST(lk1.owns_lock() == true); BOOST_TEST(lk0.mutex() == 0); @@ -56,14 +56,14 @@ int main() { boost::shared_lock lk1; - lk1 = BOOST_EXPLICIT_MOVE(boost::shared_lock(boost::unique_lock(m0))); + lk1 = BOOST_THREAD_MAKE_RV_REF(boost::shared_lock(boost::unique_lock(m0))); BOOST_TEST(lk1.mutex() == &m0); BOOST_TEST(lk1.owns_lock() == true); } { boost::upgrade_lock lk0(m0); boost::shared_lock lk1(m1); - lk1 = BOOST_EXPLICIT_MOVE(boost::shared_lock(boost::move(lk0))); + lk1 = BOOST_THREAD_MAKE_RV_REF(boost::shared_lock(boost::move(lk0))); BOOST_TEST(lk1.mutex() == &m0); BOOST_TEST(lk1.owns_lock() == true); BOOST_TEST(lk0.mutex() == 0); @@ -72,7 +72,7 @@ int main() { boost::shared_lock lk1; - lk1 = BOOST_EXPLICIT_MOVE(boost::shared_lock(boost::upgrade_lock(m0))); + lk1 = BOOST_THREAD_MAKE_RV_REF(boost::shared_lock(boost::upgrade_lock(m0))); BOOST_TEST(lk1.mutex() == &m0); BOOST_TEST(lk1.owns_lock() == true); } diff --git a/test/sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_pass.cpp b/test/sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_pass.cpp index a764b033..173f6b5c 100755 --- a/test/sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_pass.cpp +++ b/test/sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_pass.cpp @@ -36,7 +36,7 @@ int main() BOOST_TEST(lk0.owns_lock() == false); } { - boost::shared_lock lk( (BOOST_EXPLICIT_MOVE(boost::shared_lock(m)))); + boost::shared_lock lk( (BOOST_THREAD_MAKE_RV_REF(boost::shared_lock(m)))); BOOST_TEST(lk.mutex() == &m); BOOST_TEST(lk.owns_lock() == true); } diff --git a/test/sync/mutual_exclusion/locks/unique_lock/cons/move_assign_pass.cpp b/test/sync/mutual_exclusion/locks/unique_lock/cons/move_assign_pass.cpp index 9f3d7c40..09e5d98f 100644 --- a/test/sync/mutual_exclusion/locks/unique_lock/cons/move_assign_pass.cpp +++ b/test/sync/mutual_exclusion/locks/unique_lock/cons/move_assign_pass.cpp @@ -42,7 +42,7 @@ int main() { boost::unique_lock lk1; - lk1 = BOOST_EXPLICIT_MOVE(boost::unique_lock(m0)); + lk1 = BOOST_THREAD_MAKE_RV_REF(boost::unique_lock(m0)); BOOST_TEST(lk1.mutex() == &m0); BOOST_TEST(lk1.owns_lock() == true); } diff --git a/test/sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_pass.cpp b/test/sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_pass.cpp index 58c094b2..ee0d2a8c 100644 --- a/test/sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_pass.cpp +++ b/test/sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_pass.cpp @@ -36,7 +36,7 @@ int main() BOOST_TEST(lk0.owns_lock() == false); } { - boost::unique_lock lk( (BOOST_EXPLICIT_MOVE(boost::unique_lock(m)))); + boost::unique_lock lk( (BOOST_THREAD_MAKE_RV_REF(boost::unique_lock(m)))); BOOST_TEST(lk.mutex() == &m); BOOST_TEST(lk.owns_lock() == true); } diff --git a/test/sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_pass.cpp b/test/sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_pass.cpp index 5fcf355d..ad7a8e7b 100644 --- a/test/sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_pass.cpp +++ b/test/sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_pass.cpp @@ -36,7 +36,7 @@ int main() BOOST_TEST(lk0.owns_lock() == false); } { - boost::unique_lock lk( (BOOST_EXPLICIT_MOVE(boost::upgrade_lock(m)))); + boost::unique_lock lk( (BOOST_THREAD_MAKE_RV_REF(boost::upgrade_lock(m)))); BOOST_TEST(lk.mutex() == &m); BOOST_TEST(lk.owns_lock() == true); } diff --git a/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp b/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp index e89b8f79..2bea7a40 100755 --- a/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp +++ b/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp @@ -40,14 +40,14 @@ int main() { boost::upgrade_lock lk1; - lk1 = BOOST_EXPLICIT_MOVE(boost::upgrade_lock(m0)); + lk1 = BOOST_THREAD_MAKE_RV_REF(boost::upgrade_lock(m0)); BOOST_TEST(lk1.mutex() == &m0); BOOST_TEST(lk1.owns_lock() == true); } { boost::unique_lock lk0(m0); boost::upgrade_lock lk1(m1); - lk1 = BOOST_EXPLICIT_MOVE(boost::upgrade_lock(boost::move(lk0))); + lk1 = BOOST_THREAD_MAKE_RV_REF(boost::upgrade_lock(boost::move(lk0))); BOOST_TEST(lk1.mutex() == &m0); BOOST_TEST(lk1.owns_lock() == true); BOOST_TEST(lk0.mutex() == 0); @@ -56,7 +56,7 @@ int main() { boost::upgrade_lock lk1; - lk1 = BOOST_EXPLICIT_MOVE(boost::upgrade_lock(boost::unique_lock(m0))); + lk1 = BOOST_THREAD_MAKE_RV_REF(boost::upgrade_lock(boost::unique_lock(m0))); BOOST_TEST(lk1.mutex() == &m0); BOOST_TEST(lk1.owns_lock() == true); } diff --git a/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_pass.cpp b/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_pass.cpp index f66b2cea..f41c7047 100755 --- a/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_pass.cpp +++ b/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_pass.cpp @@ -36,7 +36,7 @@ int main() BOOST_TEST(lk0.owns_lock() == false); } { - boost::upgrade_lock lk( (BOOST_EXPLICIT_MOVE(boost::upgrade_lock(m)))); + boost::upgrade_lock lk( (BOOST_THREAD_MAKE_RV_REF(boost::upgrade_lock(m)))); BOOST_TEST(lk.mutex() == &m); BOOST_TEST(lk.owns_lock() == true); } diff --git a/test/test_4521.cpp b/test/test_4521.cpp index 861251dc..c911d107 100644 --- a/test/test_4521.cpp +++ b/test/test_4521.cpp @@ -7,7 +7,7 @@ int calculate_the_answer_to_life_the_universe_and_everything() int main() { boost::packaged_task pt(calculate_the_answer_to_life_the_universe_and_everything); -boost::unique_future fi=BOOST_EXPLICIT_MOVE(pt.get_future()); +boost::unique_future fi=BOOST_THREAD_MAKE_RV_REF(pt.get_future()); boost::thread task(boost::move(pt)); // launch task on a thread diff --git a/test/threads/container/thread_ptr_list_pass.cpp b/test/threads/container/thread_ptr_list_pass.cpp new file mode 100644 index 00000000..becb1a50 --- /dev/null +++ b/test/threads/container/thread_ptr_list_pass.cpp @@ -0,0 +1,99 @@ +// Copyright (C) 2011 Vicente J. Botet Escriba +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +//#include +#include +#include +#include + + +int count = 0; +boost::mutex mutex; + +namespace { + + +template +void join_all(TC & tc) +{ + for (typename TC::iterator it = tc.begin(); it != tc.end(); ++it) + { + (*it)->join(); + } +} + + +void increment_count() +{ + boost::mutex::scoped_lock lock(mutex); + std::cout << "count = " << ++count << std::endl; +} + +template +struct default_delete +{ + typedef T* pointer; + + BOOST_CONSTEXPR default_delete() BOOST_NOEXCEPT {} //= default; + template + default_delete(const default_delete&) BOOST_NOEXCEPT + {} + void operator()(T* ptr) const + { + delete ptr; + } +}; + +} +int main() +{ + { + typedef boost::shared_ptr thread_ptr; + //typedef boost::interprocess::shared_ptr, default_delete > thread_ptr; + typedef boost::container::list thread_ptr_list; + thread_ptr_list threads; + for (int i = 0; i < 10; ++i) + { + //threads.push_back(BOOST_THREAD_MAKE_RV_REF(thread_ptr(new boost::thread(&increment_count)))); + threads.push_back(thread_ptr(new boost::thread(&increment_count))); + } + BOOST_TEST(threads.size()==10); + //join_all(threads); + for (thread_ptr_list::iterator it = threads.begin(); it != threads.end(); ++it) + { + (*it)->join(); + } + } + count = 0; + { + typedef boost::shared_ptr thread_ptr; + //typedef boost::interprocess::shared_ptr, default_delete > thread_ptr; + typedef boost::container::list thread_ptr_list; + thread_ptr_list threads; + for (int i = 0; i < 10; ++i) + { + //threads.push_back(BOOST_THREAD_MAKE_RV_REF(thread_ptr(new boost::thread(&increment_count)))); + threads.push_back(thread_ptr(new boost::thread(&increment_count))); + } + BOOST_TEST(threads.size()==10); + thread_ptr sth(new boost::thread(&increment_count)); + threads.push_back(sth); + BOOST_TEST(threads.size()==11); + threads.remove(sth); + BOOST_TEST(threads.size()==10); + sth->join(); + //join_all(threads); + for (thread_ptr_list::iterator it = threads.begin(); it != threads.end(); ++it) + { + (*it)->join(); + } + } + + return boost::report_errors(); +} diff --git a/test/threads/container/thread_vector_pass.cpp b/test/threads/container/thread_vector_pass.cpp new file mode 100644 index 00000000..f8009add --- /dev/null +++ b/test/threads/container/thread_vector_pass.cpp @@ -0,0 +1,86 @@ +// Copyright (C) 2011 Vicente J. Botet Escriba +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include + +int count = 0; +boost::mutex mutex; + +namespace +{ +template +void join_all(TC & tc) +{ + for (typename TC::iterator it = tc.begin(); it != tc.end(); ++it) + { + it->join(); + } +} + +template +void interrupt_all(TC & tc) +{ + for (typename TC::iterator it = tc.begin(); it != tc.end(); ++it) + { + it->interrupt(); + } +} +} + +void increment_count() +{ + boost::mutex::scoped_lock lock(mutex); + std::cout << "count = " << ++count << std::endl; +} + +int main() +{ + typedef boost::container::vector thread_vector; + { + thread_vector threads; + threads.reserve(10); + for (int i = 0; i < 10; ++i) + { + boost::thread th(&increment_count); + threads.push_back(boost::move(th)); + } + join_all(threads); + } + count = 0; + { + thread_vector threads; + threads.reserve(10); + for (int i = 0; i < 10; ++i) + { + threads.push_back(BOOST_THREAD_MAKE_RV_REF(boost::thread(&increment_count))); + } + join_all(threads); + } + count = 0; + { + thread_vector threads; + threads.reserve(10); + for (int i = 0; i < 10; ++i) + { + threads.emplace_back(&increment_count); + } + join_all(threads); + } + count = 0; + { + thread_vector threads; + threads.reserve(10); + for (int i = 0; i < 10; ++i) + { + threads.emplace_back(&increment_count); + } + interrupt_all(threads); + } + return boost::report_errors(); +} diff --git a/test/threads/thread/constr/FrvalueArgs_pass.cpp b/test/threads/thread/constr/FrvalueArgs_pass.cpp index d4f1cbf3..dff500e6 100644 --- a/test/threads/thread/constr/FrvalueArgs_pass.cpp +++ b/test/threads/thread/constr/FrvalueArgs_pass.cpp @@ -81,7 +81,7 @@ class MoveOnly int main() { { - boost::thread t = boost::thread( BOOST_EXPLICIT_MOVE(MoveOnly()), BOOST_EXPLICIT_MOVE(MoveOnly()) ); + boost::thread t = boost::thread( BOOST_THREAD_MAKE_RV_REF(MoveOnly()), BOOST_THREAD_MAKE_RV_REF(MoveOnly()) ); t.join(); } return boost::report_errors(); diff --git a/test/threads/thread/constr/Frvalue_pass.cpp b/test/threads/thread/constr/Frvalue_pass.cpp index e88fbf74..688ec089 100644 --- a/test/threads/thread/constr/Frvalue_pass.cpp +++ b/test/threads/thread/constr/Frvalue_pass.cpp @@ -77,13 +77,13 @@ class MoveOnly }; MoveOnly MakeMoveOnly() { - return BOOST_EXPLICIT_MOVE(MoveOnly()); + return BOOST_THREAD_MAKE_RV_REF(MoveOnly()); } int main() { { - boost::thread t(( BOOST_EXPLICIT_MOVE(MakeMoveOnly()) )); + boost::thread t(( BOOST_THREAD_MAKE_RV_REF(MakeMoveOnly()) )); t.join(); } return boost::report_errors(); diff --git a/test/threads/thread/constr/move_pass.cpp b/test/threads/thread/constr/move_pass.cpp index 76748ff9..d3fb594f 100644 --- a/test/threads/thread/constr/move_pass.cpp +++ b/test/threads/thread/constr/move_pass.cpp @@ -84,7 +84,7 @@ int main() } BOOST_TEST(G::n_alive == 0); { - boost::thread t1((BOOST_EXPLICIT_MOVE(make_thread()))); + boost::thread t1((BOOST_THREAD_MAKE_RV_REF(make_thread()))); t1.join(); BOOST_TEST(G::op_run); }