Namespaces
Variants

std::in_range

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support du langage
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
Défini dans l'en-tête <utility>
template< class R, class T >
constexpr bool in_range( T t ) noexcept;
(depuis C++20)

Renvoie true si la valeur de t est dans l'intervalle des valeurs pouvant être représentées dans R, c'est-à-dire si t peut être converti en R de manière à préserver la valeur.

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

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)