std::in_range
| 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
|
(C++20)
|
retourne la plus petite des valeurs données
(objet fonction algorithme) |
|
(C++20)
|
retourne la plus grande des valeurs données
(objet fonction algorithme) |
|
(C++20)
|
limite une valeur entre une paire de valeurs limites
(objet fonction algorithme) |
|
(C++20)
|
fonction d'interpolation linéaire
(fonction) |