Namespaces
Variants

std::ranges::sized_range, std::ranges::disable_sized_range

Depuis fr.cppreference.net
 
 
Bibliothèque des intervalles (ranges)
Adaptateurs d'intervalles
 
Défini dans l'en-tête <ranges>
template< class T >
concept sized_range = ranges::range<T> &&
    requires(T& t) {
        ranges::size(t);
    };
(1) (depuis C++20)
(jusqu'à C++26)
template< class T >
concept sized_range = ranges::approximately_sized_range<T> &&
    requires(T& t) {
        ranges::size(t);
    };
(depuis C++26)
template< class >
constexpr bool disable_sized_range = false;
(2) (depuis C++20)
1) Le concept sized_range spécifie les exigences d'un type d'intervalle (range)(jusqu'à C++26)approximately_sized_range(depuis C++26) qui connaît sa taille en temps constant avec la fonction size.
2) disable_sized_range existe pour permettre l'utilisation de types d'intervalles qui fournissent une fonction size (soit en tant que membre, soit en tant que non-membre) mais qui ne modélisent pas réellement sized_range. Les utilisateurs peuvent spécialiser disable_sized_range pour des types définis par programme non qualifiés cv. De telles spécialisations doivent être utilisables dans des expressions constantes et être de type const bool.

Exigences sémantiques

1) Étant donné une lvalue t de type std:: remove_reference_t < T > , T modélise sized_range seulement si

Notes

disable_sized_range ne peut pas être utilisé pour désactiver la taille d'un intervalle dont l'itérateur et le sentinelle satisfont sized_sentinel_for ; std::disable_sized_sentinel_for doit être utilisé à la place.

disable_sized_range ne peut pas être spécialisé pour les types tableau ou les types référence.

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_ranges_reserve_hint 202502L (C++26) ranges::approximately_sized_range et ranges::reserve_hint

Exemple

#include <forward_list>
#include <list>
#include <ranges>
static_assert
(
    std::ranges::sized_range<std::list<int>> and
    not std::ranges::sized_range<std::forward_list<int>>
);
int main() {}

Voir aussi

spécifie une gamme dont le type d'itérateur satisfait random_access_iterator
(concept)
spécifie une gamme dont le type d'itérateur satisfait contiguous_iterator
(concept)