std::in_range
来自 cppreference.cn
定义于头文件 <utility> |
||
template< class R, class T > constexpr bool in_range( T t ) noexcept; |
(自 C++20) | |
如果 t
的值在 R
类型可以表示的范围内,即 t
可以以保值的方式转换为 R
,则返回 true
。
如果 T
或 T
是非整数类型、字符类型或 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)、 char
、 char8_t
、 char16_t
、 char32_t
、 wchar_t
和 bool
。
特性测试 宏 | 值 | 标准 | 特性 |
---|---|---|---|
__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) |
返回给定值中较小的值 (算法 函数对象) |
(C++20) |
返回给定值中较大的值 (算法 函数对象) |
(C++20) |
将值钳制在边界值对之间 (算法 函数对象) |
(C++20) |
线性插值函数 (函数) |