/* Copyright 2020 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #include #if !defined(BOOST_NO_CXX11_CONSTEXPR) && \ (!defined(BOOST_MSVC) || (BOOST_MSVC >= 1922)) #include #include namespace { class Value : boost::operators { public: BOOST_OPERATORS_CONSTEXPR explicit Value(int v) : v_(v) { } BOOST_OPERATORS_CONSTEXPR bool operator<(const Value& x) const { return v_ < x.v_; } BOOST_OPERATORS_CONSTEXPR bool operator==(const Value& x) const { return v_ == x.v_; } private: int v_; }; } // namespace BOOST_STATIC_ASSERT(!static_cast(Value(1) == Value(2))); BOOST_STATIC_ASSERT(Value(1) != Value(2)); BOOST_STATIC_ASSERT(Value(1) < Value(2)); BOOST_STATIC_ASSERT(Value(1) <= Value(2)); BOOST_STATIC_ASSERT(!static_cast(Value(1) > Value(2))); BOOST_STATIC_ASSERT(!static_cast(Value(1) >= Value(2))); BOOST_STATIC_ASSERT(!static_cast(Value(2) == Value(1))); BOOST_STATIC_ASSERT(Value(2) != Value(1)); BOOST_STATIC_ASSERT(!static_cast(Value(2) < Value(1))); BOOST_STATIC_ASSERT(!static_cast(Value(2) <= Value(1))); BOOST_STATIC_ASSERT(Value(2) > Value(1)); BOOST_STATIC_ASSERT(Value(2) >= Value(1)); BOOST_STATIC_ASSERT(Value(1) == Value(1)); BOOST_STATIC_ASSERT(!static_cast(Value(1) != Value(1))); BOOST_STATIC_ASSERT(!static_cast(Value(1) < Value(1))); BOOST_STATIC_ASSERT(Value(1) <= Value(1)); BOOST_STATIC_ASSERT(!static_cast(Value(1) > Value(1))); BOOST_STATIC_ASSERT(Value(1) >= Value(1)); #endif