auto is_not_equal_by_to(F f, const X& x) { return [f, x](const auto& y) { internal::trigger_static_asserts<internal::unary_function_tag, F, decltype(y)>(); return is_not_equal(internal::invoke(f, y), x); }; }
auto is_not_equal_by_and_by(F f, G g) { return [f, g](const auto& x, const auto& y) { internal::trigger_static_asserts<internal::unary_function_tag, F, decltype(x)>(); internal::trigger_static_asserts<internal::unary_function_tag, G, decltype(y)>(); using FOut = std::decay_t<internal::invoke_result_t<F, decltype(x)>>; using GOut = std::decay_t<internal::invoke_result_t<G, decltype(y)>>; static_assert(std::is_same<FOut, GOut>::value, "Functions must return the same type."); return is_not_equal(internal::invoke(f, x), internal::invoke(g, y)); }; }
const value is_not_equal(::zval const& rhs) const { return is_not_equal(rhs BOOST_PHP_TSRM_DIRECT_CC); }