Chris@102: // (C) Copyright 2008-10 Anthony Williams Chris@102: // (C) Copyright 2011-2015 Vicente J. Botet Escriba Chris@102: // Chris@102: // Distributed under the Boost Software License, Version 1.0. (See Chris@102: // accompanying file LICENSE_1_0.txt or copy at Chris@102: // http://www.boost.org/LICENSE_1_0.txt) Chris@102: Chris@102: #ifndef BOOST_THREAD_FUTURES_WAIT_FOR_ALL_HPP Chris@102: #define BOOST_THREAD_FUTURES_WAIT_FOR_ALL_HPP Chris@102: Chris@102: #include Chris@102: #include Chris@102: Chris@102: #include Chris@102: Chris@102: namespace boost Chris@102: { Chris@102: template Chris@102: typename boost::disable_if,void>::type wait_for_all(Iterator begin,Iterator end) Chris@102: { Chris@102: for(Iterator current=begin;current!=end;++current) Chris@102: { Chris@102: current->wait(); Chris@102: } Chris@102: } Chris@102: Chris@102: #ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES Chris@102: template Chris@102: typename boost::enable_if,void>::type wait_for_all(F1& f1,F2& f2) Chris@102: { Chris@102: f1.wait(); Chris@102: f2.wait(); Chris@102: } Chris@102: Chris@102: template Chris@102: void wait_for_all(F1& f1,F2& f2,F3& f3) Chris@102: { Chris@102: f1.wait(); Chris@102: f2.wait(); Chris@102: f3.wait(); Chris@102: } Chris@102: Chris@102: template Chris@102: void wait_for_all(F1& f1,F2& f2,F3& f3,F4& f4) Chris@102: { Chris@102: f1.wait(); Chris@102: f2.wait(); Chris@102: f3.wait(); Chris@102: f4.wait(); Chris@102: } Chris@102: Chris@102: template Chris@102: void wait_for_all(F1& f1,F2& f2,F3& f3,F4& f4,F5& f5) Chris@102: { Chris@102: f1.wait(); Chris@102: f2.wait(); Chris@102: f3.wait(); Chris@102: f4.wait(); Chris@102: f5.wait(); Chris@102: } Chris@102: #else Chris@102: template Chris@102: void wait_for_all(F1& f1, Fs&... fs) Chris@102: { Chris@102: bool dummy[] = { (f1.wait(), true), (fs.wait(), true)... }; Chris@102: Chris@102: // prevent unused parameter warning Chris@102: (void) dummy; Chris@102: } Chris@102: #endif // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)} Chris@102: Chris@102: } Chris@102: Chris@102: #endif // header