mirror of
				https://github.com/boostorg/utility.git
				synced 2025-11-04 10:21:48 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
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 <boost/config.hpp>
 | 
						|
#if !defined(BOOST_NO_CXX11_CONSTEXPR) && \
 | 
						|
    (!defined(BOOST_MSVC) || (BOOST_MSVC >= 1922))
 | 
						|
#include <boost/operators.hpp>
 | 
						|
#include <boost/static_assert.hpp>
 | 
						|
 | 
						|
namespace {
 | 
						|
 | 
						|
class Value
 | 
						|
    : boost::operators<Value> {
 | 
						|
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<bool>(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<bool>(Value(1) > Value(2)));
 | 
						|
BOOST_STATIC_ASSERT(!static_cast<bool>(Value(1) >= Value(2)));
 | 
						|
 | 
						|
BOOST_STATIC_ASSERT(!static_cast<bool>(Value(2) == Value(1)));
 | 
						|
BOOST_STATIC_ASSERT(Value(2) != Value(1));
 | 
						|
BOOST_STATIC_ASSERT(!static_cast<bool>(Value(2) < Value(1)));
 | 
						|
BOOST_STATIC_ASSERT(!static_cast<bool>(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<bool>(Value(1) != Value(1)));
 | 
						|
BOOST_STATIC_ASSERT(!static_cast<bool>(Value(1) < Value(1)));
 | 
						|
BOOST_STATIC_ASSERT(Value(1) <= Value(1));
 | 
						|
BOOST_STATIC_ASSERT(!static_cast<bool>(Value(1) > Value(1)));
 | 
						|
BOOST_STATIC_ASSERT(Value(1) >= Value(1));
 | 
						|
#endif
 |