Namespaces
Variants

std:: in_range

From cppreference.net
Utilities library
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 pueden representarse en R , es decir, si t puede convertirse a R de manera que se preserve su valor.

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

Contenidos

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)