Namespaces
Variants

std::ranges::common_range

Depuis fr.cppreference.net
 
 
Bibliothèque de plages
Adaptateurs de plages
 
Défini dans l'en-tête <ranges>
template< class T >
concept common_range =
    ranges::range<T> && std::same_as<ranges::iterator_t<T>, ranges::sentinel_t<T>>;
(depuis C++20)

Le concept common_range est un raffinement de range pour lequel std::ranges::begin() et std::ranges::end() retournent le même type (par exemple, tous les conteneurs de la bibliothèque standard).

Exemple

#include <ranges>
struct A
{
    char* begin();
    char* end();
};
static_assert( std::ranges::common_range<A> );
struct B
{
    char* begin();
    bool end();
};  // pas un common_range : begin/end ont des types différents
static_assert( not std::ranges::common_range<B> );
struct C
{
    char* begin();
};  // pas un common_range, ni même un range : n'a pas de end()
static_assert( not std::ranges::common_range<C> );
int main() {}

Voir aussi

convertit une view en une common_range
(modèle de classe) (objet adaptateur de gamme)