22#if !defined(__cpp_lib_not_fn) && !(defined(_LIBCPP_VERSION) && __cplusplus > 201103L)
24#define R__NOTFN_BACKPORT
31namespace __ROOT_noinline {
37 explicit not_fn_t(
F &&
f) : fFun(std::forward<F>(
f)) {}
38 not_fn_t(not_fn_t &&
h) =
default;
39 not_fn_t(
const not_fn_t &
f) =
default;
41 template <
class... Args>
42 auto operator()(Args &&... args) & ->
decltype(
43 !std::declval<std::result_of_t<std::decay_t<F>(Args...)>>())
45 return !fFun(std::forward<Args>(args)...);
47 template <
class... Args>
48 auto operator()(Args &&... args)
const & ->
decltype(
49 !std::declval<std::result_of_t<std::decay_t<F>
const(Args...)>>())
51 return !fFun(std::forward<Args>(args)...);
58__ROOT_noinline::not_fn_t<F> not_fn(
F &&
f)
60 return __ROOT_noinline::not_fn_t<F>(std::forward<F>(
f));
TRObject operator()(const T1 &t1) const