20 General utilities library [utilities]

20.14 Function objects [function.objects]

20.14.12 Function template not_­fn [func.not.fn]

template<class F> constexpr unspecified not_fn(F&& f);
In the text that follows:
  • g is a value of the result of a not_­fn invocation,
  • FD is the type decay_­t<F>,
  • fd is the target object of g ([func.def]) of type FD, direct-non-list-initialized with std​::​forward<F​>(f),
  • call_­args is an argument pack used in a function call expression ([expr.call]) of g.
Mandates: is_­constructible_­v<FD, F> && is_­move_­constructible_­v<FD> is true.
Preconditions: FD meets the Cpp17MoveConstructible requirements.
Returns: A perfect forwarding call wrapper g with call pattern !invoke(fd, call_­args...).
Throws: Any exception thrown by the initialization of fd.