The Invocable concept specifies a relationship between a callable type ( ISO/IEC 14882:2014 §[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 bool Invocable =
requires(F&& f, Args&&... args) {
invoke(std::forward<F>(f), std::forward<Args>(args)...); // not required to be equality preserving
};
[ Note: Since the invoke function call expression is not required to be equality-preserving ([concepts.lib.general.equality]), a function that generates random numbers may satisfy Invocable. — end note ]