The concepts in subclause [concepts.callable] describe the requirements on function
objects ([function.objects]) and their arguments.

The invocable concept specifies a relationship between a callable
type ([func.def]) F and a set of argument types Args... which
can be evaluated by the library function invoke ([func.invoke]).

```
template<class F, class... Args>
concept regular_invocable = invocable<F, Args...>;
```

```
template<class F, class... Args>
concept predicate =
regular_invocable<F, Args...> && boolean-testable<invoke_result_t<F, Args...>>;
```

```
template<class R, class T, class U>
concept equivalence_relation = relation<R, T, U>;
```

A relation models equivalence_relation only if
it imposes an equivalence relation on its arguments.

```
template<class R, class T, class U>
concept strict_weak_order = relation<R, T, U>;
```