Namespaces
Variants

std::ranges::common_range

Von de.cppreference.net
 
 
Bereichsbibliothek
Bereichsadapter
 
Definiert in Header <ranges>
template< class T >
concept common_range =
    ranges::range<T> && std::same_as<ranges::iterator_t<T>, ranges::sentinel_t<T>>;
(seit C++20)

Das Konzept common_range ist eine Verfeinerung von range, für das std::ranges::begin() und std::ranges::end() denselben Typ zurückgeben (z. B. alle Standardbibliothekscontainer).

Beispiel

#include <ranges>
struct A
{
    char* begin();
    char* end();
};
static_assert( std::ranges::common_range<A> );
struct B
{
    char* begin();
    bool end();
};  // kein common_range: begin/end haben unterschiedliche Typen
static_assert( not std::ranges::common_range<B> );
struct C
{
    char* begin();
};  // kein common_range, nicht einmal ein range: hat kein end()
static_assert( not std::ranges::common_range<C> );
int main() {}

Siehe auch

konvertiert eine view in einen common_range
(Klassen-Template) (Range-Adapter-Objekt)