Skip to content

Commit 71d22ca

Browse files
authored
Merge pull request #1741 from ericniebler/timed-scheduler-tag-invoke-deprecation
add `tag_invoke` deprecation warnings to `exec::now`, `exec::schedule_at`, and `exec::schedule_after`
2 parents b883077 + ef8d403 commit 71d22ca

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

include/exec/timed_scheduler.hpp

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,18 @@ namespace exec {
4141
struct now_t {
4242
template <class _Scheduler>
4343
requires __has_now<_Scheduler>
44+
STDEXEC_ATTRIBUTE(always_inline)
4445
auto operator()(const _Scheduler& __sched) const noexcept(noexcept(__sched.now()))
4546
-> __decay_t<decltype(__sched.now())> {
4647
static_assert(time_point<__decay_t<decltype(__sched.now())>>);
4748
return __sched.now();
4849
}
4950

5051
template <class _Scheduler>
51-
requires(!__has_now<_Scheduler>) && tag_invocable<now_t, const _Scheduler&>
52-
auto operator()(const _Scheduler& __sched) const
52+
requires __has_now<_Scheduler> || tag_invocable<now_t, const _Scheduler&>
53+
[[deprecated("the use of tag_invoke for exec::now() is deprecated")]]
54+
STDEXEC_ATTRIBUTE(always_inline) //
55+
auto operator()(const _Scheduler& __sched) const
5356
noexcept(nothrow_tag_invocable<now_t, const _Scheduler&>)
5457
-> __decay_t<tag_invoke_result_t<now_t, const _Scheduler&>> {
5558
static_assert(time_point<__decay_t<tag_invoke_result_t<now_t, const _Scheduler&>>>);
@@ -112,10 +115,11 @@ namespace exec {
112115
}
113116

114117
template <class _Scheduler>
115-
requires(!__has_schedule_after_member<_Scheduler>)
116-
&& tag_invocable<schedule_after_t, _Scheduler, const duration_of_t<_Scheduler>&>
117-
STDEXEC_ATTRIBUTE(always_inline)
118-
auto operator()(_Scheduler&& __sched, const duration_of_t<_Scheduler>& __duration) const
118+
requires __has_schedule_after_member<_Scheduler>
119+
|| tag_invocable<schedule_after_t, _Scheduler, const duration_of_t<_Scheduler>&>
120+
[[deprecated("the use of tag_invoke for exec::schedule_after is deprecated")]]
121+
STDEXEC_ATTRIBUTE(always_inline) //
122+
auto operator()(_Scheduler&& __sched, const duration_of_t<_Scheduler>& __duration) const
119123
noexcept(
120124
nothrow_tag_invocable<schedule_after_t, _Scheduler, const duration_of_t<_Scheduler>&>)
121125
-> tag_invoke_result_t<schedule_after_t, _Scheduler, const duration_of_t<_Scheduler>&> {
@@ -184,10 +188,11 @@ namespace exec {
184188
}
185189

186190
template <class _Scheduler>
187-
requires(!__has_schedule_at_member<_Scheduler>)
188-
&& tag_invocable<schedule_at_t, _Scheduler, const time_point_of_t<_Scheduler>&>
189-
STDEXEC_ATTRIBUTE(always_inline)
190-
auto operator()(_Scheduler&& __sched, const time_point_of_t<_Scheduler>& __time_point) const
191+
requires __has_schedule_at_member<_Scheduler>
192+
|| tag_invocable<schedule_at_t, _Scheduler, const time_point_of_t<_Scheduler>&>
193+
[[deprecated("the use of tag_invoke for exec::schedule_at is deprecated")]]
194+
STDEXEC_ATTRIBUTE(always_inline) //
195+
auto operator()(_Scheduler&& __sched, const time_point_of_t<_Scheduler>& __time_point) const
191196
noexcept(
192197
nothrow_tag_invocable<schedule_at_t, _Scheduler, const time_point_of_t<_Scheduler>&>)
193198
-> tag_invoke_result_t<schedule_at_t, _Scheduler, const time_point_of_t<_Scheduler>&> {

0 commit comments

Comments
 (0)