]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/thread/test/test_11818.cpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / libs / thread / test / test_11818.cpp
1 // Copyright (C) 2014 Vicente Botet
2 //
3 // Distributed under the Boost Software License, Version 1.0. (See accompanying
4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6 #define BOOST_THREAD_VERSION 4
7 #include <boost/config.hpp>
8 #if ! defined BOOST_NO_CXX11_DECLTYPE
9 #define BOOST_RESULT_OF_USE_DECLTYPE
10 #endif
11
12 #include <boost/thread/future.hpp>
13 #include <boost/thread/thread.hpp>
14 #include <thread>
15
16 int main()
17 {
18
19 {
20 boost::promise<int> promise;
21 boost::future<int> future = promise.get_future();
22
23 boost::future<int> result =
24 future.then
25 (
26 boost::launch::deferred,
27 [](boost::future<int> && f)
28 {
29 std::cout << std::this_thread::get_id() << ": callback" << std::endl;
30 std::cout << "The value is: " << f.get() << std::endl;
31 return f.get();
32 }
33 );
34
35 // We could not reach here.
36 std::cout << std::this_thread::get_id() << ": function" << std::endl;
37
38 promise.set_value(0);
39 }
40
41 {
42 boost::promise<int> promise;
43 boost::shared_future<int> future = promise.get_future().share();
44
45 boost::future<int> result =
46 future.then
47 (
48 boost::launch::deferred,
49 [](boost::shared_future<int> && f)
50 {
51 std::cout << std::this_thread::get_id() << ": callback" << std::endl;
52 std::cout << "The value is: " << f.get() << std::endl;
53 return f.get();
54 }
55 );
56
57 // We could not reach here.
58 std::cout << std::this_thread::get_id() << ": function" << std::endl;
59
60 promise.set_value(0);
61 }
62
63 return 0;
64 }