[thread.req.paramname] (original) (raw)

Throughout this Clause, the names of template parameters are used to express type requirements.

Predicate is a function object type ([function.objects]).

Let pred denote an lvalue of type Predicate.

Then the expression pred() shall be well-formed and the type decltype(pred()) shall modelboolean-testable ([concept.booleantestable]).

The return value of pred(), converted to bool, yields true if the corresponding test condition is satisfied, andfalse otherwise.

If a template parameter is named Clock, the corresponding template argument shall be a type Cthat meets the Cpp17Clock requirements ([time.clock.req]); the program is ill-formed if is_clock_v<C> is false.