include/boost/capy/detail/run_callbacks.hpp

54.5% Lines (594/1089) 53.1% Functions (199/375) 62.5% Branches (40/64)
include/boost/capy/detail/run_callbacks.hpp
Line Branch Hits Source Code
1 //
2 // Copyright (c) 2025 Vinnie Falco (vinnie.falco@gmail.com)
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/cppalliance/capy
8 //
9
10 #ifndef BOOST_CAPY_DETAIL_RUN_CALLBACKS_HPP
11 #define BOOST_CAPY_DETAIL_RUN_CALLBACKS_HPP
12
13 #include <boost/capy/detail/config.hpp>
14
15 #include <concepts>
16 #include <exception>
17 #include <type_traits>
18 #include <utility>
19
20 namespace boost {
21 namespace capy {
22 namespace detail {
23
24 struct default_handler
25 {
26 template<class T>
27 2 void operator()(T&&) const noexcept
28 {
29 2 }
30
31 1153 void operator()() const noexcept
32 {
33 1153 }
34
35 692 void operator()(std::exception_ptr ep) const
36 {
37
1/2
✓ Branch 1 taken 692 times.
✗ Branch 2 not taken.
692 if(ep)
38 692 std::rethrow_exception(ep);
39 }
40 };
41
42 template<class H1, class H2>
43 struct handler_pair
44 {
45 static_assert(
46 std::is_nothrow_move_constructible_v<H1> &&
47 std::is_nothrow_move_constructible_v<H2>,
48 "Handlers must be nothrow move constructible");
49
50 H1 h1_;
51 H2 h2_;
52
53 template<class T>
54 77 void operator()(T&& v)
55 {
56
12/12
void boost::capy::detail::handler_pair<boost::capy::when_all_test::testAllSucceed()::{lambda(std::tuple<int>)#1}, boost::capy::when_all_test::testAllSucceed()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int> >(std::tuple<int>&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_all_test::testAwaitableMoveConstruction()::{lambda(std::tuple<int, int>)#1}, boost::capy::when_all_test::testAwaitableMoveConstruction()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int, int> >(std::tuple<int, int>&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_all_test::testDeferredAwait()::{lambda(std::tuple<int, int>)#1}, boost::capy::when_all_test::testDeferredAwait()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int, int> >(std::tuple<int, int>&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_all_test::testDispatcherUsedForAllTasks()::{lambda(std::tuple<int, int, int>)#1}, boost::capy::when_all_test::testDispatcherUsedForAllTasks()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int, int, int> >(std::tuple<int, int, int>&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_all_test::testManyTasks()::{lambda(auto:1)#1}, boost::capy::when_all_test::testManyTasks()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int, int, int, int, int, int, int, int> >(std::tuple<int, int, int, int, int, int, int, int>&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_all_test::testMixedTypes()::{lambda(std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)#1}, boost::capy::when_all_test::testMixedTypes()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_all_test::testMixedVoidValueOrder()::{lambda(std::tuple<int, int>)#1}, boost::capy::when_all_test::testMixedVoidValueOrder()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int, int> >(std::tuple<int, int>&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_all_test::testNestedWhenAll()::{lambda(std::tuple<int, int>)#1}, boost::capy::when_all_test::testNestedWhenAll()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int, int> >(std::tuple<int, int>&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_all_test::testResultsInInputOrder()::{lambda(std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)#1}, boost::capy::when_all_test::testResultsInInputOrder()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_all_test::testThreeTasksSucceed()::{lambda(std::tuple<int, int, int>)#1}, boost::capy::when_all_test::testThreeTasksSucceed()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int, int, int> >(std::tuple<int, int, int>&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_any_test::testWhenAnyInsideWhenAll()::{lambda(std::tuple<int, int>)#1}, boost::capy::when_any_test::testWhenAnyInsideWhenAll()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int, int> >(std::tuple<int, int>&&):
✓ Branch 3 taken 1 time.
void boost::capy::detail::handler_pair<boost::capy::when_any_vector_test::testWhenAnyVectorInsideWhenAll()::{lambda(std::tuple<int, int>)#1}, boost::capy::when_any_vector_test::testWhenAnyVectorInsideWhenAll()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()<std::tuple<int, int> >(std::tuple<int, int>&&):
✓ Branch 3 taken 1 time.
77 h1_(std::forward<T>(v));
57 77 }
58
59 5 void operator()()
60 {
61 5 h1_();
62 5 }
63
64 26 void operator()(std::exception_ptr ep)
65 {
66
23/24
boost::capy::detail::handler_pair<boost::capy::run_async_test::testErrorHandlerReceivesException()::{lambda(int)#1}, boost::capy::run_async_test::testErrorHandlerReceivesException()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::task_test::testAsyncRunErrorHandler()::{lambda(int)#1}, boost::capy::task_test::testAsyncRunErrorHandler()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::task_test::testAsyncRunTaskWithException()::{lambda(int)#1}, boost::capy::task_test::testAsyncRunTaskWithException()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::task_test::testAsyncRunVoidTaskWithException()::{lambda()#2}, boost::capy::task_test::testAsyncRunVoidTaskWithException()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::task_test::testDelete()::{lambda()#2}, boost::capy::task_test::testDelete()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::task_test::testExceptionWithCancellation()::{lambda(int)#1}, boost::capy::task_test::testExceptionWithCancellation()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::task_test::testExceptionWithCancellation()::{lambda(int)#2}, boost::capy::task_test::testExceptionWithCancellation()::{lambda(std::__exception_ptr::exception_ptr)#2}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::test::run_blocking_test::testExceptionHandler()::{lambda(int)#1}, boost::capy::test::run_blocking_test::testExceptionHandler()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::test::run_blocking_test::testVoidExceptionHandler()::{lambda()#1}, boost::capy::test::run_blocking_test::testVoidExceptionHandler()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_all_test::testDifferentExceptionTypes()::{lambda(std::tuple<int, int>)#1}, boost::capy::when_all_test::testDifferentExceptionTypes()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_all_test::testFirstException()::{lambda(std::tuple<int, int>)#1}, boost::capy::when_all_test::testFirstException()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_all_test::testMultipleFailuresFirstWins()::{lambda(std::tuple<int, int, int>)#1}, boost::capy::when_all_test::testMultipleFailuresFirstWins()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_all_test::testNestedWhenAllStopPropagation()::{lambda(std::tuple<int, int>)#1}, boost::capy::when_all_test::testNestedWhenAllStopPropagation()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_all_test::testVoidTaskException()::{lambda(std::tuple<int>)#1}, boost::capy::when_all_test::testVoidTaskException()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_any_io_awaitable_range_test::testEmptyRangeThrows()::{lambda(auto:1&&)#1}, boost::capy::when_any_io_awaitable_range_test::testEmptyRangeThrows()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_any_test::testExceptionWinsRace()::{lambda(auto:1&&)#1}, boost::capy::when_any_test::testExceptionWinsRace()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_any_test::testInterleavedExceptions()::{lambda(auto:1&&)#1}, boost::capy::when_any_test::testInterleavedExceptions()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_any_test::testMultipleExceptionsFirstWins()::{lambda(auto:1&&)#1}, boost::capy::when_any_test::testMultipleExceptionsFirstWins()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_any_test::testSingleTaskException()::{lambda(auto:1&&)#1}, boost::capy::when_any_test::testSingleTaskException()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_any_test::testVoidTaskException()::{lambda(auto:1&&)#1}, boost::capy::when_any_test::testVoidTaskException()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_any_vector_test::testEmptyVectorThrows()::{lambda(std::pair<unsigned long, int>)#1}, boost::capy::when_any_vector_test::testEmptyVectorThrows()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_any_vector_test::testExceptionInVector()::{lambda(std::pair<unsigned long, int>)#1}, boost::capy::when_any_vector_test::testExceptionInVector()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_any_vector_test::testExceptionWinsRaceVector()::{lambda(std::pair<unsigned long, int>)#1}, boost::capy::when_any_vector_test::testExceptionWinsRaceVector()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::when_any_vector_test::testVoidExceptionInVector()::{lambda(unsigned long)#1}, boost::capy::when_any_vector_test::testVoidExceptionInVector()::{lambda(std::__exception_ptr::exception_ptr)#1}>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
26 h2_(ep);
67 26 }
68 };
69
70 template<class H1>
71 struct handler_pair<H1, default_handler>
72 {
73 static_assert(
74 std::is_nothrow_move_constructible_v<H1>,
75 "Handler must be nothrow move constructible");
76
77 H1 h1_;
78
79 template<class T>
80 72 void operator()(T&& v)
81 {
82 72 h1_(std::forward<T>(v));
83 72 }
84
85 2309 void operator()()
86 {
87 2309 h1_();
88 2309 }
89
90 1389 void operator()(std::exception_ptr ep)
91 {
92 if constexpr(std::invocable<H1, std::exception_ptr>)
93
4/26
boost::capy::detail::handler_pair<boost::capy::detail::default_handler, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::detail::default_handler, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 692 times.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testChainedTasks()::{lambda(int)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testDeeplyNestedTasks()::{lambda(int)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testMixedCalls()::{lambda(int)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testMixedCalls()::{lambda(int)#2}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testMixedCalls()::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testMultipleCalls()::{lambda(int)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testMultipleCalls()::{lambda(int)#2}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testMultipleCalls()::{lambda(int)#3}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testNestedTaskCatchException()::{lambda(int)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testNestedTaskValue()::{lambda(int)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testReturnInt()::{lambda(int)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testReturnString()::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::run_blocking_test::testValueAwaitsVoid()::{lambda(int)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testAllocatorPropagation()::{lambda(bool)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testDualHandlers()::{lambda(int)#1}, boost::capy::test::run_blocking_test::testDualHandlers()::{lambda(std::__exception_ptr::exception_ptr)#1}>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testExceptionHandler()::{lambda(int)#1}, boost::capy::test::run_blocking_test::testExceptionHandler()::{lambda(std::__exception_ptr::exception_ptr)#1}>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testIntTaskWithHandler()::{lambda(int)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testNestedTask()::{lambda(int)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testOverloadedHandlerException()::handler_t, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testStopTokenNotRequested()::{lambda(bool)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testStopTokenRequested()::{lambda(bool)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testStringTaskWithHandler()::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testVoidExceptionHandler()::{lambda()#1}, boost::capy::test::run_blocking_test::testVoidExceptionHandler()::{lambda(std::__exception_ptr::exception_ptr)#1}>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✓ Branch 2 taken 1 time.
boost::capy::detail::handler_pair<boost::capy::test::blocking_handler_wrapper<boost::capy::test::run_blocking_test::testVoidTaskWithHandler()::{lambda()#1}, boost::capy::detail::default_handler>, boost::capy::detail::default_handler>::operator()(std::__exception_ptr::exception_ptr):
✗ Branch 2 not taken.
1389 h1_(ep);
94 else
95 std::rethrow_exception(ep);
96 697 }
97 };
98
99 } // namespace detail
100 } // namespace capy
101 } // namespace boost
102
103 #endif
104