@@ -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