13template <
typename T,
typename...
Args>
18template <
typename Func,
typename...
Args>
23template <
typename Func>
25 static constexpr bool Value = std::is_invocable_v<Func>;
28template <
typename Func,
typename...
Args>
33template <
typename Func>
35 using Type = std::invoke_result_t<Func>;
38template <
template <
typename...>
typename Instance,
typename...>
40 static constexpr bool Value =
false;
43template <
template <
typename...>
typename Instance,
typename...
Args>
45 static constexpr bool Value =
true;
48template <
template <
typename...>
typename Instance,
typename T>
53template <
template <
typename...>
typename Instance,
typename V>
58template <
template <
typename...>
typename Instance,
typename T>
64template <
template <
typename...>
typename Instance,
typename V,
typename T>
76template <
typename V,
typename T>
82template <
typename V,
typename T>
88template <
typename V,
typename T>
94template <
typename V,
typename T>
100template <
typename V,
typename T>
106template <
typename V,
typename T>
112template <
typename It,
typename Tag,
typename = std::
void_t<>>
114 static constexpr bool Value =
false;
117template <
typename It,
typename Tag>
119 static constexpr bool Value = std::is_base_of_v<Tag, typename std::iterator_traits<It>::iterator_category>;
122template <
typename It,
typename = std::
void_t<>>
124 static constexpr bool Value =
false;
127template <
typename It>
132template <
typename Sentinel,
typename It,
typename = std::
void_t<>>
134 static constexpr bool Value =
false;
137template <
typename Sentinel,
typename It>
139 std::
void_t<decltype(std::declval<const It&>() == std::declval<const Sentinel&>())>> {
143template <
typename It,
typename Sentinel>
148template <
typename Range>
149using RangeIterator = std::decay_t<decltype(std::begin(std::declval<Range&>()))>;
151template <
typename Range>
152using RangeSentinel = std::decay_t<decltype(std::end(std::declval<Range&>()))>;
154template <
typename Range,
typename = std::
void_t<>>
156 static constexpr bool Value =
false;
159template <
typename Range>
164template <
typename It,
typename Sentinel,
typename = std::
void_t<>>
166 static constexpr bool Value =
false;
169template <
typename It,
typename Sentinel>
171 std::
void_t<decltype(std::declval<const Sentinel&>() - std::declval<const It&>()),
172 decltype(std::declval<const It&>() - std::declval<const Sentinel&>())>> {
Provides a mechanism to access the result of async operations.
Provides a mechanism to access the result of async operations.
Provides a mechanism to access the result of async operations.
constexpr char Tag() noexcept
std::decay_t< decltype(std::begin(std::declval< Range & >()))> RangeIterator
std::decay_t< decltype(std::end(std::declval< Range & >()))> RangeSentinel
Contract< V, T > MakeContract()
Creates related future and promise.
static constexpr bool Value
static constexpr bool Value
std::invoke_result_t< Func > Type
std::invoke_result_t< Func, Args... > Type
static constexpr bool Value
static constexpr bool Value
static constexpr bool Value