#ifndef OPERATOR_NAME #error OPERATOR_NAME ! defined #endif #ifndef OPERATOR_SYMBOL #error OPERATOR_SYMBOL ! defined #endif #ifndef OPERATOR_ISYMBOL #error OPERATOR_ISYMBOL ! defined #endif #include "pythonic/utils/functor.hpp" #ifdef USE_XSIMD #include #endif PYTHONIC_NS_BEGIN namespace operator_ { template auto OPERATOR_NAME(bool, A &&a, B &&b, ...) -> decltype(std::forward(a) OPERATOR_SYMBOL std::forward(b)); template auto OPERATOR_NAME(bool, A &&a, B &&b, std::nullptr_t) -> decltype(std::forward(a) OPERATOR_ISYMBOL std::forward(b)); template auto OPERATOR_NAME(A &&a, B &&b) -> decltype(OPERATOR_NAME(true, std::forward(a), std::forward(b), nullptr)) { return OPERATOR_NAME(true, std::forward(a), std::forward(b), nullptr); } DEFINE_FUNCTOR(pythonic::operator_, OPERATOR_NAME); } PYTHONIC_NS_END #undef OPERATOR_NAME #undef OPERATOR_SYMBOL #undef OPERATOR_ISYMBOL