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());
例外
投げない
例
#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));
}
xxxxxxxxxx
#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));
}
出力
バージョン
言語
- C++20
処理系
- Clang:
- GCC: 10.1 ✅
- Visual C++: 2019 Update 7 ✅