Namespaces
Variants

std::in_range

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte de lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación de tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
Definido en el encabezado <utility>
template< class R, class T >
constexpr bool in_range( T t ) noexcept;
(desde C++20)

Devuelve true si el valor de t está en el rango de valores que se pueden representar en R, es decir, si t se puede convertir a R de manera que preserve el valor.

Es un error en tiempo de compilación si T o U es un tipo no entero, un tipo carácter, o bool.

Parámetros

t - valor a probar

Valor de retorno

true si el valor de t es representable en R , false en caso contrario.

Implementación posible

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());
}

Notas

Esta función no puede utilizarse con enums (incluyendo std::byte ), char , char8_t , char16_t , char32_t , wchar_t y bool .

Macro de prueba de características Valor Std Característica
__cpp_lib_integer_comparison_functions 202002L (C++20) Funciones de comparación de enteros

Ejemplo

#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';
}

Salida:

false
true

Véase también

devuelve el menor de los valores dados
(objeto función de algoritmo)
devuelve el mayor de los valores dados
(objeto función de algoritmo)
limita un valor entre un par de valores límite
(objeto función de algoritmo)
(C++20)
función de interpolación lineal
(función)