22#if !defined(__cpp_lib_not_fn) && !(defined(_LIBCPP_VERSION) && __cplusplus > 201103L)
24#define R__NOTFN_BACKPORT
33namespace __ROOT_noinline {
39 explicit not_fn_t(
F &&
f) : fFun(std::forward<F>(
f)) {}
40 not_fn_t(not_fn_t &&
h) =
default;
41 not_fn_t(
const not_fn_t &
f) =
default;
43 template <
class... Args>
45 operator()(Args &&...args) & ->
decltype(!std::declval<ROOT::TypeTraits::InvokeResult_t<std::decay_t<F>, Args...>>())
47 return !fFun(std::forward<Args>(args)...);
49 template <
class... Args>
51 const & ->
decltype(!std::declval<ROOT::TypeTraits::InvokeResult_t<std::decay_t<F>
const, Args...>>())
53 return !fFun(std::forward<Args>(args)...);
60__ROOT_noinline::not_fn_t<F> not_fn(
F &&
f)
62 return __ROOT_noinline::not_fn_t<F>(std::forward<F>(
f));
TRObject operator()(const T1 &t1) const