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