mirror of
https://github.com/BlackMATov/kari.hpp.git
synced 2025-12-15 13:29:49 +07:00
add == and != operators to kari::underscore
This commit is contained in:
6
kari.hpp
6
kari.hpp
@@ -504,6 +504,8 @@ namespace kari
|
||||
constexpr auto operator > (us_t, us_t) { return curry(std::greater<>()); }
|
||||
constexpr auto operator <= (us_t, us_t) { return curry(std::less_equal<>()); }
|
||||
constexpr auto operator >= (us_t, us_t) { return curry(std::greater_equal<>()); }
|
||||
constexpr auto operator == (us_t, us_t) { return curry(std::equal_to<>()); }
|
||||
constexpr auto operator != (us_t, us_t) { return curry(std::not_equal_to<>()); }
|
||||
|
||||
constexpr auto operator | (us_t, us_t) { return curry(std::bit_or<>()); }
|
||||
constexpr auto operator & (us_t, us_t) { return curry(std::bit_and<>()); }
|
||||
@@ -524,6 +526,8 @@ namespace kari
|
||||
template < typename A > constexpr auto operator > (A&& a, us_t) { return (_ > _)(std::forward<A>(a)); }
|
||||
template < typename A > constexpr auto operator <= (A&& a, us_t) { return (_ <= _)(std::forward<A>(a)); }
|
||||
template < typename A > constexpr auto operator >= (A&& a, us_t) { return (_ >= _)(std::forward<A>(a)); }
|
||||
template < typename A > constexpr auto operator == (A&& a, us_t) { return (_ == _)(std::forward<A>(a)); }
|
||||
template < typename A > constexpr auto operator != (A&& a, us_t) { return (_ != _)(std::forward<A>(a)); }
|
||||
|
||||
template < typename A > constexpr auto operator | (A&& a, us_t) { return (_ | _)(std::forward<A>(a)); }
|
||||
template < typename A > constexpr auto operator & (A&& a, us_t) { return (_ & _)(std::forward<A>(a)); }
|
||||
@@ -544,6 +548,8 @@ namespace kari
|
||||
template < typename A > constexpr auto operator > (us_t, A&& a) { return fflip(_ > _)(std::forward<A>(a)); }
|
||||
template < typename A > constexpr auto operator <= (us_t, A&& a) { return fflip(_ <= _)(std::forward<A>(a)); }
|
||||
template < typename A > constexpr auto operator >= (us_t, A&& a) { return fflip(_ >= _)(std::forward<A>(a)); }
|
||||
template < typename A > constexpr auto operator == (us_t, A&& a) { return fflip(_ == _)(std::forward<A>(a)); }
|
||||
template < typename A > constexpr auto operator != (us_t, A&& a) { return fflip(_ != _)(std::forward<A>(a)); }
|
||||
|
||||
template < typename A > constexpr auto operator | (us_t, A&& a) { return fflip(_ | _)(std::forward<A>(a)); }
|
||||
template < typename A > constexpr auto operator & (us_t, A&& a) { return fflip(_ & _)(std::forward<A>(a)); }
|
||||
|
||||
@@ -207,17 +207,32 @@ TEST_CASE("kari_feature") {
|
||||
REQUIRE((_ / 2)(84) == 42);
|
||||
REQUIRE((_ % 100)(142) == 42);
|
||||
|
||||
REQUIRE((_ == 42)(42));
|
||||
REQUIRE((_ != 42)(40));
|
||||
REQUIRE_FALSE((_ == 42)(40));
|
||||
REQUIRE_FALSE((_ != 42)(42));
|
||||
|
||||
REQUIRE((40 + _)(2) == 42);
|
||||
REQUIRE((44 - _)(2) == 42);
|
||||
REQUIRE((21 * _)(2) == 42);
|
||||
REQUIRE((84 / _)(2) == 42);
|
||||
REQUIRE((142 % _)(100) == 42);
|
||||
|
||||
REQUIRE((42 == _)(42));
|
||||
REQUIRE((42 != _)(40));
|
||||
REQUIRE_FALSE((42 == _)(40));
|
||||
REQUIRE_FALSE((42 != _)(42));
|
||||
|
||||
REQUIRE((_ + _)(40,2) == 42);
|
||||
REQUIRE((_ - _)(44,2) == 42);
|
||||
REQUIRE((_ * _)(21,2) == 42);
|
||||
REQUIRE((_ / _)(84,2) == 42);
|
||||
REQUIRE((_ % _)(142,100) == 42);
|
||||
|
||||
REQUIRE((_ == _)(42,42));
|
||||
REQUIRE((_ != _)(42,40));
|
||||
REQUIRE_FALSE((_ == _)(42,40));
|
||||
REQUIRE_FALSE((_ != _)(42,42));
|
||||
}
|
||||
SECTION("ref_functor") {
|
||||
REQUIRE(curry(minus3_gf())(1,2,3) == -4);
|
||||
|
||||
Reference in New Issue
Block a user