@@ -231,7 +231,7 @@ class inline_or_executor
231231 */
232232 inline_or_executor<Executor, execution::blocking_t ::possibly_t ,
233233 InlineExceptionHandling>
234- require (execution::blocking_t ::possibly_t ) const noexcept
234+ require (const execution::blocking_t ::possibly_t & ) const noexcept
235235 {
236236 return inline_or_executor<Executor, execution::blocking_t ::possibly_t ,
237237 InlineExceptionHandling>(executor_);
@@ -249,7 +249,7 @@ class inline_or_executor
249249 */
250250 inline_or_executor<Executor, execution::blocking_t ::always_t ,
251251 InlineExceptionHandling>
252- require (execution::blocking_t ::always_t ) const noexcept
252+ require (const execution::blocking_t ::always_t & ) const noexcept
253253 {
254254 return inline_or_executor<Executor, execution::blocking_t ::always_t ,
255255 InlineExceptionHandling>(executor_);
@@ -266,15 +266,13 @@ class inline_or_executor
266266 * asio::execution::blocking.never); @endcode
267267 */
268268 template <typename Property>
269- inline_or_executor<Executor, execution::blocking_t ::never_t ,
270- InlineExceptionHandling>
271- require (const Property&,
272- constraint_t <
273- is_same<Property, execution::blocking_t ::never_t >::value
274- > = 0 ,
275- constraint_t <
276- can_require<const Executor&, Property>::value
277- > = 0 ) const noexcept
269+ constraint_t <
270+ is_same<Property, execution::blocking_t ::never_t >::value
271+ && can_require<const Executor&, Property>::value,
272+ inline_or_executor<Executor, execution::blocking_t ::never_t ,
273+ InlineExceptionHandling>
274+ >
275+ require (const Property&) const noexcept
278276 {
279277 return inline_or_executor<Executor, execution::blocking_t ::never_t ,
280278 InlineExceptionHandling>(executor_);
@@ -293,7 +291,8 @@ class inline_or_executor
293291 */
294292 inline_or_executor<Executor, Blocking,
295293 execution::inline_exception_handling_t ::propagate_t >
296- require (execution::inline_exception_handling_t ::propagate_t ) const noexcept
294+ require (const execution::inline_exception_handling_t ::propagate_t &)
295+ const noexcept
297296 {
298297 return inline_or_executor<Executor, Blocking,
299298 execution::inline_exception_handling_t ::propagate_t >(executor_);
@@ -312,7 +311,8 @@ class inline_or_executor
312311 */
313312 inline_or_executor<Executor, Blocking,
314313 execution::inline_exception_handling_t ::propagate_t >
315- require (execution::inline_exception_handling_t ::terminate_t ) const noexcept
314+ require (const execution::inline_exception_handling_t ::terminate_t &)
315+ const noexcept
316316 {
317317 return inline_or_executor<Executor, Blocking,
318318 execution::inline_exception_handling_t ::terminate_t >(executor_);
@@ -329,18 +329,16 @@ class inline_or_executor
329329 * asio::execution::relationship.continuation); @endcode
330330 */
331331 template <typename Property>
332- inline_or_executor<decay_t <require_result_t <const Executor&, Property>>,
333- Blocking, InlineExceptionHandling>
334- require (const Property& p,
335- constraint_t <
336- can_require<const Executor&, Property>::value
337- > = 0 ,
338- constraint_t <
339- !is_convertible<Property, execution::blocking_t >::value
340- > = 0 ,
341- constraint_t <
342- !is_convertible<Property, execution::inline_exception_handling_t >::value
343- > = 0 ) const
332+ constraint_t <
333+ can_require<const Executor&, Property>::value
334+ && !is_convertible<Property,
335+ execution::blocking_t >::value
336+ && !is_convertible<Property,
337+ execution::inline_exception_handling_t >::value,
338+ inline_or_executor<decay_t <require_result_t <const Executor&, Property>>,
339+ Blocking, InlineExceptionHandling>
340+ >
341+ require (const Property& p) const
344342 noexcept (is_nothrow_require<const Executor&, Property>::value)
345343 {
346344 return inline_or_executor<
0 commit comments