17 #include <boost/hana/type.hpp>
18 #include <boost/hana/unpack.hpp>
20 namespace hana = boost::hana;
32 template <
typename... aborters_t>
35 static_assert(not detail::has_duplicates_v<aborters_t...>,
36 "same aborter type specified several times");
43 detail::type_collector_t<detail::action_type_extractor, aborters_t...>,
44 hana::template_<AbortList>))::type;
76 AbortList(
const std::tuple<aborters_t...>& aborters)
77 : detail::
Extendable<aborters_t...>(aborters) {}
83 : detail::
Extendable<aborters_t...>(std::move(aborters)) {}
86 template <
typename... appendices_t>
89 std::tuple_cat(
tuple(), std::tuple<appendices_t...>(aps...));
90 return AbortList<aborters_t..., appendices_t...>(std::move(catTuple));
103 template <
typename result_t,
typename propagator_state_t,
typename stepper_t>
104 bool operator()(
const result_t& result, propagator_state_t& state,
105 const stepper_t&
stepper)
const {
109 propagator_state_t, stepper_t>...>,
110 "not all aborters support the specified input");
113 return detail::abort_list_impl<aborters_t...>::check(
tuple(), result, state,