Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #81319
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | A container reverse-adaptor for range-based for loops |
| Date | 2021-09-19 11:23 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <si6vip$7t5$1@dont-email.me> (permalink) |
#pragma once
#if defined(__cpp_concepts)
#include <concepts>
template<typename Container>
concept concept_reverser = requires( Container cont )
{
{ cont.rbegin() } -> std::convertible_to<typename
Container::reverse_iterator>;
{ cont.rend() } -> std::convertible_to<typename
Container::reverse_iterator>;
};
#endif
template<typename Container>
#if defined(__cpp_concepts)
requires concept_reverser<Container>
#endif
struct reverser
{
using iterator = typename Container::reverse_iterator;
reverser( Container &cont );
iterator begin();
iterator end();
private:
Container &m_cont;
};
template<typename Container>
#if defined(__cpp_concepts)
requires concept_reverser<Container>
#endif
inline
reverser<Container>::reverser( Container &cont ) :
m_cont( cont )
{
}
template<typename Container>
#if defined(__cpp_concepts)
requires concept_reverser<Container>
#endif
inline
typename reverser<Container>::iterator reverser<Container>::begin()
{
return m_cont.rbegin();
}
template<typename Container>
#if defined(__cpp_concepts)
requires concept_reverser<Container>
#endif
inline
typename reverser<Container>::iterator reverser<Container>::end()
{
return m_cont.rend();
}
Back to comp.lang.c++ | Previous | Next — Next in thread | Find similar | Unroll thread
A container reverse-adaptor for range-based for loops Bonita Montero <Bonita.Montero@gmail.com> - 2021-09-19 11:23 +0200 Re: A container reverse-adaptor for range-based for loops Bonita Montero <Bonita.Montero@gmail.com> - 2021-09-19 12:12 +0200
csiph-web