Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #81319 > unrolled thread

A container reverse-adaptor for range-based for loops

Started byBonita Montero <Bonita.Montero@gmail.com>
First post2021-09-19 11:23 +0200
Last post2021-09-19 12:12 +0200
Articles 2 — 1 participant

Back to article view | Back to comp.lang.c++


Contents

  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

#81319 — A container reverse-adaptor for range-based for loops

FromBonita Montero <Bonita.Montero@gmail.com>
Date2021-09-19 11:23 +0200
SubjectA container reverse-adaptor for range-based for loops
Message-ID<si6vip$7t5$1@dont-email.me>
#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();
}

[toc] | [next] | [standalone]


#81322

FromBonita Montero <Bonita.Montero@gmail.com>
Date2021-09-19 12:12 +0200
Message-ID<si72f8$vvs$1@dont-email.me>
In reply to#81319
Am 19.09.2021 um 11:23 schrieb Bonita Montero:
> ...
> template<typename Container>
> concept concept_reverser = requires( Container cont )
> {
	typename Container::reverse_iterator;
>      { cont.rbegin() } -> std::convertible_to<typename 
> Container::reverse_iterator>;
>      { cont.rend()   } -> std::convertible_to<typename 
> Container::reverse_iterator>;
> };
> #endif
> ...

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.c++


csiph-web