utility_in_range
utility_in_range (값의 범위 검사 함수)
std::in_range 함수는 C++20에서 도입된 유틸리티로, 어떤 정수 값이 다른 정수 타입에서 값 손실 없이 표현될 수 있는지 확인해요. 이 함수는 주어진 값 t가 타입 R의 표현 가능한 범위 안에 있는지를 컴파일 타임에 검사해요. 정수 타입 비교 함수들 중 하나로, 안전한 타입 변환을 도와줘요.
출처: cppreference
본문
개요
<utility> 헤더에 정의되어 있어요.
<utility> 헤더에 정의됨 |
||
|---|---|---|
template < class R , class T > constexpr bool in_range ( T t ) noexcept ; |
(C++20부터) |
t의 값이 R로 표현할 수 있는 값의 범위 안에 있으면 true를 반환해요. 즉, t를 R로 변환할 때 값이 보존되는 방식으로 변환될 수 있으면 true예요.
T 또는 U가 정수 타입이 아니거나, 문자 타입이거나, 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
같이 보기
ranges::min (C++20) |
주어진 값들 중 더 작은 값을 반환해요 (알고리즘 함수 객체) |
|---|---|
ranges::max (C++20) |
주어진 값들 중 더 큰 값을 반환해요 (알고리즘 함수 객체) |
ranges::clamp (C++20) |
값을 경계값 사이로 제한해요 (알고리즘 함수 객체) |
lerp (C++20) |
선형 보간 함수예요 (함수) |