std::ranges::common_range
Depuis fr.cppreference.net
| 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
Exécuter ce code
#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) |