15template <
typename T,
typename Callback>
16concept HasStopCallback =
17 requires {
typename T::template callback_type<Callback>; };
19template <
typename T,
typename Callback>
struct stop_callback_traits;
20template <
typename T,
typename Callback>
21 requires HasStopCallback<T, Callback>
22struct stop_callback_traits<T, Callback> {
23 using type =
typename T::template callback_type<Callback>;
25template <
typename T,
typename Callback>
26 requires(!HasStopCallback<T, Callback> &&
27 std::is_same_v<T, std::stop_token>)
28struct stop_callback_traits<T, Callback> {
29 using type = std::stop_callback<Callback>;
34template <
typename T,
typename Callback>
35using stop_callback_t =
36 typename detail::stop_callback_traits<T, Callback>::type;
38template <
typename Sender,
typename Receiver>
39using operation_state_t =
40 decltype(std::declval<Sender &&>().connect(std::declval<Receiver &&>()));
42template <
typename Receiver>
44 std::remove_cvref_t<decltype(std::declval<Receiver &>().get_stop_token())>;
The main namespace for the Condy library.