1 // Range v3 library 2 // 3 // Copyright Eric Niebler 2014-present 4 // 5 // Use, modification and distribution is subject to the 6 // Boost Software License, Version 1.0. (See accompanying 7 // file LICENSE_1_0.txt or copy at 8 // http://www.boost.org/LICENSE_1_0.txt) 9 // 10 // Project home: https://github.com/ericniebler/range-v3 11 // 12 13 #ifndef RANGES_V3_UTILITY_INFINITY_HPP 14 #define RANGES_V3_UTILITY_INFINITY_HPP 15 16 #include <concepts/concepts.hpp> 17 18 #include <range/v3/range_fwd.hpp> 19 RANGES_DEPRECATED_HEADER( 20 "This header is deprecated and will be removed from a future version of range-v3.") 21 22 #include <range/v3/detail/prologue.hpp> 23 24 namespace ranges 25 { 26 /// \cond 27 struct infinity 28 { operator ==(infinity,infinity)29 friend constexpr bool operator==(infinity, infinity) 30 { 31 return true; 32 } operator !=(infinity,infinity)33 friend constexpr bool operator!=(infinity, infinity) 34 { 35 return false; 36 } 37 template<typename Integer> operator ==(Integer,infinity)38 friend constexpr auto operator==(Integer, infinity) noexcept 39 -> CPP_broken_friend_ret(bool)( 40 /// \pre 41 requires integral<Integer>) 42 { 43 return false; 44 } 45 template<typename Integer> operator ==(infinity,Integer)46 friend constexpr auto operator==(infinity, Integer) noexcept 47 -> CPP_broken_friend_ret(bool)( 48 /// \pre 49 requires integral<Integer>) 50 { 51 return false; 52 } 53 template<typename Integer> operator !=(Integer,infinity)54 friend constexpr auto operator!=(Integer, infinity) noexcept 55 -> CPP_broken_friend_ret(bool)( 56 /// \pre 57 requires integral<Integer>) 58 { 59 return true; 60 } 61 template<typename Integer> operator !=(infinity,Integer)62 friend constexpr auto operator!=(infinity, Integer) noexcept 63 -> CPP_broken_friend_ret(bool)( 64 /// \pre 65 requires integral<Integer>) 66 { 67 return true; 68 } 69 }; 70 /// \endcond 71 } // namespace ranges 72 73 #include <range/v3/detail/epilogue.hpp> 74 75 #endif 76