std::in_range
来自cppreference.com
在标头 <utility> 定义 | ||
template<class R, class T > constexprbool in_range( T t )noexcept; | (C++20 起) | |
若 t 的值处于 R
可以表示的值的范围内,即 t 能转换到 R
而无数据损失,则为 true。
若 T
或 R
不是整数类型,或为字符类型或 bool,则为编译时错误。
目录 |
[编辑]参数
t | - | 要测试的值 |
[编辑]返回值
若 t 的值可以 R
表示则为 true,否则为 false。
[编辑]可能的实现
template<class R, class T>constexprbool in_range(T t)noexcept{returnstd::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) | 线性插值函数 (函数) |