1 #ifndef DXLE_INC_BASIC_TYPES_COORDINATE_OPERATOR_BOOL_HELPER_HPP_ 2 #define DXLE_INC_BASIC_TYPES_COORDINATE_OPERATOR_BOOL_HELPER_HPP_ 16 bool has_operator_bool = !std::is_scalar<T>::value && is_castable<T, bool>::value,
17 bool has_operator_notequal_to_zero = has_operator_notequal_to_zero<const T>::value,
18 bool is_compareable_with_default_ctor = std::is_default_constructible<T>::value && has_operator_notequal_to_this<T>::value
22 template<
typename T,
bool has_operator_notequal_to_zero,
bool is_compareable_with_default_ctor>
25 return static_cast<bool>(first) || static_cast<bool>(second);
28 return static_cast<bool>(first) || static_cast<bool>(second) ||
static_cast<bool>(third);
32 template<
typename T,
bool is_compareable_with_default_ctor>
35 return first != 0 || second != 0;
38 return first != 0 || second != 0 || third != 0;
45 return first != T{} || second != T{};
48 return first != T{} || second != T{} || third != T{};
52 template<typename T, enable_if_t<std::is_arithmetic<T>::value,
nullptr_t> =
nullptr>
58 template<typename T, enable_if_t<std::is_arithmetic<T>::value, nullptr_t> =
nullptr>
66 #endif //DXLE_INC_BASIC_TYPES_COORDINATE_OPERATOR_BOOL_HELPER_HPP_ DXLE_CONSTEXPR bool operator()(const T &first, const T &second) const DXLE_NOEXCEPT_IF_EXPR(static_cast< bool >(first))
DXLE_CONSTEXPR bool operator_bool_helper(const T &first, const T &second) DXLE_NOEXCEPT_IF_EXPR(dxle
DXLE_CONSTEXPR bool operator()(const T &first, const T &second) const DXLE_NOEXCEPT_IF_EXPR(first !=0)
#define DXLE_NOEXCEPT_IF_EXPR(EXPR)
DXLE_CONSTEXPR bool operator()(const T &first, const T &second, const T &third) const DXLE_NOEXCEPT_IF_EXPR(first !=0)
DXLE_CONSTEXPR bool operator()(const T &first, const T &second, const T &third) const DXLE_NOEXCEPT_IF_EXPR(static_cast< bool >(first))