命名空间
变体
操作

std::in_range

来自 cppreference.cn
< cpp‎ | utility
 
 
 
定义于头文件 <utility>
template< class R, class T >
constexpr bool in_range( T t ) noexcept;
(自 C++20)

如果 t 的值在 R 类型可以表示的范围内,即 t 可以以保值的方式转换为 R,则返回 true

如果 TT 是非整数类型、字符类型或 bool 类型,则会产生编译时错误。

内容

[编辑] 参数

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::byte)、 charchar8_tchar16_tchar32_twchar_tbool

特性测试 标准 特性
__cpp_lib_integer_comparison_functions 202002L (C++20) 整数比较函数

[编辑] 示例

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

输出

false
true

[编辑] 参见

返回给定值中较小的值
(算法 函数对象)[编辑]
返回给定值中较大的值
(算法 函数对象)[编辑]
将值钳制在边界值对之间
(算法 函数对象)[编辑]
(C++20)
线性插值函数
(函数) [编辑]