// Copyright (C) 2014 Vicente Botet // // 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) #define BOOST_THREAD_VERSION 4 #include #if ! defined BOOST_NO_CXX11_DECLTYPE #define BOOST_RESULT_OF_USE_DECLTYPE #endif #include #include #include int main() { { boost::promise promise; boost::future future = promise.get_future(); boost::future result = future.then ( boost::launch::deferred, [](boost::future && f) { std::cout << std::this_thread::get_id() << ": callback" << std::endl; std::cout << "The value is: " << f.get() << std::endl; return f.get(); } ); // We could not reach here. std::cout << std::this_thread::get_id() << ": function" << std::endl; promise.set_value(0); } { boost::promise promise; boost::shared_future future = promise.get_future().share(); boost::future result = future.then ( boost::launch::deferred, [](boost::shared_future && f) { std::cout << std::this_thread::get_id() << ": callback" << std::endl; std::cout << "The value is: " << f.get() << std::endl; return f.get(); } ); // We could not reach here. std::cout << std::this_thread::get_id() << ": function" << std::endl; promise.set_value(0); } return 0; }