std::numeric_limits<T>:: traps
|
static
const
bool
traps
;
|
(C++11 이전) | |
|
static
constexpr
bool
traps
;
|
(C++11 이후) | |
std::
numeric_limits
<
T
>
::
traps
값은 프로그램 시작 시 산술 연산의 인수로 사용될 경우
트랩(trap)
을 발생시키는 값을 하나 이상 갖는 모든 산술 타입
T
에 대해
true
입니다.
목차 |
표준 특수화
T
|
std:: numeric_limits < T > :: traps 의 값 |
| /* non-specialized */ | false |
| bool | false |
| char | 일반적으로 true |
| signed char | 일반적으로 true |
| unsigned char | 일반적으로 true |
| wchar_t | 일반적으로 true |
| char8_t (C++20부터) | 일반적으로 true |
| char16_t (C++11부터) | 일반적으로 true |
| char32_t (C++11부터) | 일반적으로 true |
| short | 일반적으로 true |
| unsigned short | 일반적으로 true |
| int | 일반적으로 true |
| unsigned int | 일반적으로 true |
| long | 일반적으로 true |
| unsigned long | 일반적으로 true |
| long long (C++11부터) | 일반적으로 true |
| unsigned long long (C++11부터) | 일반적으로 true |
| float | 일반적으로 false |
| double | 일반적으로 false |
| long double | 일반적으로 false |
참고 사항
대부분의 플랫폼에서 정수 나누기 연산에서 0으로 나누는 것은 항상 트랩을 발생시키며, std:: numeric_limits < T > :: traps 는 값 0 을 지원하는 모든 정수 타입에 대해 true 입니다. 예외는 bool 타입입니다: false 로 나누는 것이 bool 에서 int 로의 정수 승격으로 인해 트랩을 발생시키지만, 실제로 트랩을 발생시키는 것은 0 값을 가진 int 입니다. 0은 bool 타입의 값이 아닙니다.
대부분의 플랫폼에서, 부동 소수점 예외는 런타임에 켜고 끌 수 있습니다(예: Linux의
feenableexcept
(
)
또는 Windows의
_controlfp
). 이 경우 부동 소수점 타입에 대한
std::
numeric_limits
<
T
>
::
traps
의 값은 프로그램 시작 시점의 부동 소수점 트랩 기능 상태를 반영하며, 대부분의 현대 시스템에서는
false
입니다. 예외적으로
DEC Alpha
프로그램의 경우,
-ieee
없이 컴파일되었을 때
true
가 됩니다.
예제
#include <iostream> #include <limits> int main() { std::cout << std::boolalpha << "bool: traps = " << std::numeric_limits<bool>::traps << '\n' << "char: traps = " << std::numeric_limits<char>::traps << '\n' << "char16_t: traps = " << std::numeric_limits<char16_t>::traps << '\n' << "long: traps = " << std::numeric_limits<long>::traps << '\n' << "float: traps = " << std::numeric_limits<float>::traps << '\n'; }
가능한 출력:
// GCC 출력: bool: traps = true char: traps = true char16_t: traps = true long: traps = true float: traps = false // Clang 출력: bool: traps = false char: traps = true char16_t: traps = true long: traps = true float: traps = false
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 497 | C++98 |
런타임에 트랩이 활성화 또는 비활성화된 경우
무엇이 반환되는지 불분명했음 |
프로그램 시작 시점의
활성화 상태를 반환함 |
참고 항목
| 부동 소수점 환경 | |
|
[static]
|
반올림 전에 아주 작은 값을 감지하는 부동 소수점 타입을 식별함
(public static member constant) |
|
[static]
|
정밀도 손실을 부정확한 결과가 아닌 비정규화 손실로 감지하는 부동 소수점 타입을 식별함
(public static member constant) |