Namespaces
Variants

std::numeric_limits<T>::traps

Aus de.cppreference.net
 
 
Dienstprogrammbibliothek
Sprachunterstützung
Typunterstützung (grundlegende Typen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Koroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Dienstprogramme
Relationale Operatoren (veraltet in C++20)
Ganzzahlvergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Tausch und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
 
static const bool traps;
(bis C++11)
static constexpr bool traps;
(seit C++11)

Der Wert von std::numeric_limits<T>::traps ist true für alle arithmetischen Typen T, die mindestens einen Wert zu Beginn des Programms haben, der, wenn er als Argument für eine arithmetische Operation verwendet wird, eine Falle auslöst.

Standardspezialisierungen

T Wert von std:: numeric_limits < T > :: traps
/* non-specialized */ false
bool false
char üblicherweise true
signed char üblicherweise true
unsigned char üblicherweise true
wchar_t üblicherweise true
char8_t (seit C++20) üblicherweise true
char16_t (seit C++11) üblicherweise true
char32_t (seit C++11) üblicherweise true
short üblicherweise true
unsigned short üblicherweise true
int üblicherweise true
unsigned int üblicherweise true
long üblicherweise true
unsigned long üblicherweise true
long long (seit C++11) üblicherweise true
unsigned long long (seit C++11) üblicherweise true
float üblicherweise false
double üblicherweise false
long double üblicherweise false

Hinweise

Auf den meisten Plattformen führt eine ganzzahlige Division durch Null immer zu einem Trap, und std:: numeric_limits < T > :: traps ist true für alle ganzzahligen Typen, die den Wert ​ 0 ​ unterstützen. Die Ausnahme ist der Typ bool : Obwohl die Division durch false aufgrund der integralen Promotion von bool zu int einen Trap verursacht, ist es der nullwertige int , der den Trap auslöst. Null ist kein Wert des Typs bool .

Auf den meisten Plattformen können Gleitkomma-Ausnahmen zur Laufzeit ein- und ausgeschaltet werden (z.B. feenableexcept ( ) unter Linux oder _controlfp unter Windows). In diesem Fall spiegelt der Wert von std:: numeric_limits < T > :: traps für Gleitkommatypen den Zustand der Gleitkomma-Trapping-Einrichtung zum Zeitpunkt des Programmstarts wider, was false auf den meisten modernen Systemen ist. Eine Ausnahme wäre ein DEC Alpha -Programm, wo es true ist, wenn ohne -ieee kompiliert.

Beispiel

#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';
}

Mögliche Ausgabe:

// GCC-Ausgabe:
bool:     traps = true
char:     traps = true
char16_t: traps = true
long:     traps = true
float:    traps = false
// Clang-Ausgabe:
bool:     traps = false
char:     traps = true
char16_t: traps = true
long:     traps = true
float:    traps = false

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 497 C++98 es war unklar, was zurückgegeben wird, wenn Trapping
zur Laufzeit aktiviert oder deaktiviert ist
gibt den Aktivierungsstatus
zum Startzeitpunkt des Programms zurück

Siehe auch

Gleitkomma-Umgebung
identifiziert Gleitkommatypen, die Tinyness vor dem Runden erkennen
(öffentliche statische Member-Konstante)
identifiziert die Gleitkommatypen, die Genauigkeitsverlust als Denormalisierungsverlust rather than inexact result erkennen
(öffentliche statische Member-Konstante)