- utility[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp20[meta cpp]
namespace std {
template <class R, class T>
constexpr bool in_range(T t) noexcept;
}
値が型のとりうる範囲内か判定する。
この関数は、任意の整数型T
の値t
が、指定した整数型R
のとりうる範囲内かを判定する。
- 型
T
と型U
はどちらも、符号なし整数型もしくは符号付き整数型であること
以下と等価:
return cmp_greater_equal(t, numeric_limits<R>::min()) &&
cmp_less_equal(t, numeric_limits<R>::max());
- cmp_greater_equal[link cmp_greater_equal.md]
- cmp_less_equal[link cmp_less_equal.md]
- numeric_limits[link /reference/limits/numeric_limits.md]
- min()[link /reference/limits/numeric_limits/min.md]
- max()[link /reference/limits/numeric_limits/max.md]
投げない
#include <cassert>
#include <utility>
#include <cstdint>
int main() {
// -1は、符号付き整数型intのとりうる範囲内である
assert(std::in_range<int>(-1));
// -1は、符号なし整数型unsigned intのとりうる範囲内ではない
assert(!std::in_range<unsigned int>(-1));
// 255は、符号なし8ビット整数の範囲内である
assert(std::in_range<std::uint8_t>(255));
// 255は、符号付き8ビット整数の範囲内ではない
assert(!std::in_range<std::int8_t>(255));
}
- std::in_range[color ff0000]
- std::uint8_t[link /reference/cstdint/uint8_t.md]
- std::int8_t[link /reference/cstdint/int8_t.md]
- C++20
- Clang:
- GCC: 10.1
- Visual C++: 2019 Update 7