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를 반환해요. 즉, tR로 변환할 때 값이 보존되는 방식으로 변환될 수 있으면 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) 선형 보간 함수예요 (함수)

더 알아보기 (Learn more)

cppreference