infinity.hpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. #ifndef RANGES_V3_UTILITY_INFINITY_HPP
  13. #define RANGES_V3_UTILITY_INFINITY_HPP
  14. #include <concepts/concepts.hpp>
  15. #include <range/v3/range_fwd.hpp>
  16. RANGES_DEPRECATED_HEADER(
  17. "This header is deprecated and will be removed from a future version of range-v3.")
  18. #include <range/v3/detail/prologue.hpp>
  19. namespace ranges
  20. {
  21. /// \cond
  22. struct infinity
  23. {
  24. friend constexpr bool operator==(infinity, infinity)
  25. {
  26. return true;
  27. }
  28. friend constexpr bool operator!=(infinity, infinity)
  29. {
  30. return false;
  31. }
  32. template<typename Integer>
  33. friend constexpr auto operator==(Integer, infinity) noexcept
  34. -> CPP_broken_friend_ret(bool)(
  35. requires integral<Integer>)
  36. {
  37. return false;
  38. }
  39. template<typename Integer>
  40. friend constexpr auto operator==(infinity, Integer) noexcept
  41. -> CPP_broken_friend_ret(bool)(
  42. requires integral<Integer>)
  43. {
  44. return false;
  45. }
  46. template<typename Integer>
  47. friend constexpr auto operator!=(Integer, infinity) noexcept
  48. -> CPP_broken_friend_ret(bool)(
  49. requires integral<Integer>)
  50. {
  51. return true;
  52. }
  53. template<typename Integer>
  54. friend constexpr auto operator!=(infinity, Integer) noexcept
  55. -> CPP_broken_friend_ret(bool)(
  56. requires integral<Integer>)
  57. {
  58. return true;
  59. }
  60. };
  61. /// \endcond
  62. } // namespace ranges
  63. #include <range/v3/detail/epilogue.hpp>
  64. #endif