OGLplus  (0.59.0) a C++ wrapper for rendering APIs

integer_range.hpp
Go to the documentation of this file.
1 
9 #ifndef EAGINE_INTEGER_RANGE_HPP
10 #define EAGINE_INTEGER_RANGE_HPP
11 
12 #include "iterator.hpp"
13 
14 namespace eagine {
15 
21 template <typename T>
23 public:
27  constexpr integer_range() noexcept = default;
28 
31  constexpr integer_range(T e) noexcept
32  : _end{e} {}
33 
36  constexpr integer_range(T b, T e) noexcept
37  : _begin{b}
38  , _end{e} {}
39 
42 
44  using size_type = decltype(std::declval<T>() - std::declval<T>());
45 
48  constexpr auto empty() const noexcept {
49  return _end == _begin;
50  }
51 
54  constexpr auto size() const noexcept {
55  return _end - _begin;
56  }
57 
59  constexpr auto begin() const noexcept -> iterator {
60  return {_begin};
61  }
62 
64  constexpr auto end() const noexcept -> iterator {
65  return {_end};
66  }
67 
68 private:
69  T _begin{0};
70  T _end{0};
71 };
72 
75 template <typename B, typename E>
76 integer_range(B, E) -> integer_range<std::common_type_t<B, E>>;
77 
78 } // namespace eagine
79 
80 #endif // EAGINE_INTEGER_RANGE_HPP
Common code is placed in this namespace.
Definition: eagine.hpp:21
constexpr auto end() const noexcept -> iterator
Returns the iterator past the end of the range.
Definition: integer_range.hpp:64
constexpr auto empty() const noexcept
Indicates that the range is empty.
Definition: integer_range.hpp:48
constexpr auto begin() const noexcept -> iterator
Returns the iterator to the start of the range.
Definition: integer_range.hpp:59
decltype(std::declval< T >() - std::declval< T >()) size_type
Iteration count type alias.
Definition: integer_range.hpp:44
constexpr auto size() const noexcept
Returns the number of iteration steps in this range.
Definition: integer_range.hpp:54
Integer range type template usable in range-based loops.
Definition: integer_range.hpp:22
constexpr integer_range(T b, T e) noexcept
Initialization specifying the begin and past the end integer values.
Definition: integer_range.hpp:36
constexpr integer_range() noexcept=default
Default constructor.
Default instantiation of basic_selfref_iterator.
Definition: iterator.hpp:177
constexpr integer_range(T e) noexcept
Initialization specifying the past the end integer value.
Definition: integer_range.hpp:31
integer_range(B, E) -> integer_range< std::common_type_t< B, E >>
Deduction guide for integer_range.

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).