@@ -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_);
@@ -265,16 +265,9 @@ class inline_or_executor
265265 * auto ex2 = asio::require(ex1,
266266 * asio::execution::blocking.never); @endcode
267267 */
268- template <typename Property>
269268 inline_or_executor<Executor, execution::blocking_t ::never_t ,
270269 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
270+ require (const execution::blocking_t ::never_t &) const noexcept
278271 {
279272 return inline_or_executor<Executor, execution::blocking_t ::never_t ,
280273 InlineExceptionHandling>(executor_);
@@ -293,7 +286,8 @@ class inline_or_executor
293286 */
294287 inline_or_executor<Executor, Blocking,
295288 execution::inline_exception_handling_t ::propagate_t >
296- require (execution::inline_exception_handling_t ::propagate_t ) const noexcept
289+ require (const execution::inline_exception_handling_t ::propagate_t &)
290+ const noexcept
297291 {
298292 return inline_or_executor<Executor, Blocking,
299293 execution::inline_exception_handling_t ::propagate_t >(executor_);
@@ -311,8 +305,9 @@ class inline_or_executor
311305 * asio::execution::inline_exception_handling.terminate); @endcode
312306 */
313307 inline_or_executor<Executor, Blocking,
314- execution::inline_exception_handling_t ::propagate_t >
315- require (execution::inline_exception_handling_t ::terminate_t ) const noexcept
308+ execution::inline_exception_handling_t ::terminate_t >
309+ require (const execution::inline_exception_handling_t ::terminate_t &)
310+ const noexcept
316311 {
317312 return inline_or_executor<Executor, Blocking,
318313 execution::inline_exception_handling_t ::terminate_t >(executor_);
@@ -329,18 +324,17 @@ class inline_or_executor
329324 * asio::execution::relationship.continuation); @endcode
330325 */
331326 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
327+ constraint_t <
328+ // can_require<const Executor&, Property>::value
329+ /* && !is_convertible<Property,
330+ execution::blocking_t>::value
331+ && !is_convertible<Property,
332+ execution::inline_exception_handling_t>::value,*/
333+ !is_same<Property, execution::blocking_t ::never_t >::value,
334+ inline_or_executor<decay_t <require_result_t <const Executor&, Property>>,
335+ Blocking, InlineExceptionHandling>
336+ >
337+ require (const Property& p) const
344338 noexcept (is_nothrow_require<const Executor&, Property>::value)
345339 {
346340 return inline_or_executor<
0 commit comments