Namespaces
Variants

std:: in_range

From cppreference.net
Utilities library
Défini dans l'en-tête <utility>
template < class R, class T >
constexpr bool in_range ( T t ) noexcept ;
(depuis C++20)

Retourne true si la valeur de t se trouve dans la plage de valeurs pouvant être représentées dans R , c'est-à-dire si t peut être converti en R de manière à préserver sa valeur.

C'est une erreur de compilation si soit T soit U est un type non- entier , un type caractère, ou bool .

Table des matières

Paramètres

t - valeur à tester

Valeur de retour

true si la valeur de t est représentable dans R , false sinon.

Implémentation possible

template<class R, class T>
constexpr bool in_range(T t) noexcept
{
    return std::cmp_greater_equal(t, std::numeric_limits<R>::min()) &&
        std::cmp_less_equal(t, std::numeric_limits<R>::max());
}

Notes

Cette fonction ne peut pas être utilisée avec les énumérations (y compris std::byte ), char , char8_t , char16_t , char32_t , wchar_t et bool .

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_integer_comparison_functions 202002L (C++20) Fonctions de comparaison d'entiers

Exemple

#include <iostream>
#include <utility>
int main()
{
    std::cout << std::boolalpha;
    std::cout << std::in_range<std::size_t>(-1) << '\n';
    std::cout << std::in_range<std::size_t>(42) << '\n';
}

Sortie :

false
true

Voir aussi

retourne la plus petite des valeurs données
(objet fonction algorithme)
retourne la plus grande des valeurs données
(objet fonction algorithme)
limite une valeur entre une paire de valeurs limites
(objet fonction algorithme)
(C++20)
fonction d'interpolation linéaire
(fonction)