C++ 参考手册

位置:首页 > C++ 参考手册 >工具库 > std::in_range

t 的值在能以 R 表示的值的范围内,即 t 能转换到 R 而无数据损失则为 true

TR 不是有符号或无符号整数类型(包括标准整数类型与扩展整数类型),则为编译时错误。

目录

参数

t - 要测试的值

返回值

t 的值可以 R 表示则为 true ,否则为 false

可能的实现

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

注解

此函数不能用于 std::bytecharchar8_tchar16_tchar32_twchar_tbool

示例

#include <utility>
#include <iostream>
#include <iomanip>
 
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';
}

输出:

false
true