tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
rbegin.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2// SPDX-FileCopyrightText: Copyright (C) 2021 Tobias Hienzsch
3
4#ifndef TETL_ITERATOR_RBEGIN_HPP
5#define TETL_ITERATOR_RBEGIN_HPP
6
7#include <etl/_iterator/end.hpp>
8
9namespace etl {
10
11template <typename Iter>
12struct reverse_iterator;
13
14/// \brief Returns an iterator to the reverse-beginning of the given container.
15/// \ingroup iterator
16template <typename Container>
17constexpr auto rbegin(Container& c) -> decltype(c.rbegin())
18{
19 return c.rbegin();
20}
21
22/// \ingroup iterator
23template <typename Container>
24constexpr auto rbegin(Container const& c) -> decltype(c.rbegin())
25{
26 return c.rbegin();
27}
28
29/// \ingroup iterator
30template <typename T, size_t N>
31constexpr auto rbegin(T (&array)[N]) -> reverse_iterator<T*>
32{
33 return reverse_iterator<T*>(end(array));
34}
35
36/// \ingroup iterator
37template <typename Container>
38constexpr auto crbegin(Container const& c) -> decltype(rbegin(c))
39{
40 return rbegin(c);
41}
42
43} // namespace etl
44
45#endif // TETL_ITERATOR_RBEGIN_HPP
constexpr auto crbegin(Container const &c) -> decltype(rbegin(c))
Definition rbegin.hpp:38
constexpr auto rbegin(T(&array)[N]) -> reverse_iterator< T * >
Definition rbegin.hpp:31
constexpr auto rbegin(Container const &c) -> decltype(c.rbegin())
Definition rbegin.hpp:24
constexpr auto rbegin(Container &c) -> decltype(c.rbegin())
Returns an iterator to the reverse-beginning of the given container.
Definition rbegin.hpp:17
Definition adjacent_find.hpp:9