std::is_floating_point
Von cppreference.com
| Definiert in der Kopfdatei <type_traits> |
||
| template< class T > struct is_floating_point; |
(seit C++11) | |
std::is_floating_point ist ein UnaryTypeTrait.
Prüft, ob T ein Fließkommatyp ist. Stellt die Mitgliedskonstante value bereit, die gleich true ist, wenn T der Typ float, double, long double, oder irgendeiner erweiterter Fließkommatypen (std::float16_t, std::float32_t, std::float64_t, std::float128_t, oder std::bfloat16_t)(seit C++23), einschließlich aller cv-qualifizierten Varianten. Andernfalls ist value gleich false.
Wenn das Programm Spezialisierungen für std::is_floating_point oder std::is_floating_point_v hinzufügt, ist das Verhalten undefiniert.
Inhalt |
[bearbeiten] Template-Parameter
| T | - | ein zu prüfender Typ |
[bearbeiten] Hilfsvariablen-Template
| template< class T > constexpr bool is_floating_point_v = is_floating_point<T>::value; |
(seit C++17) | |
Abgeleitet von std::integral_constant
Member-Konstanten
| value [static] |
true, wenn T ein Fließkommatyp ist (möglicherweise cv-qualifiziert), false andernfalls(öffentliche statische Member-Konstante) |
Memberfunktionen
| operator bool |
konvertiert das Objekt zu bool, gibt value zurück (öffentliche Memberfunktion) |
| operator() (C++14) |
gibt value zurück (öffentliche Memberfunktion) |
Membertypen
| Typ | Definition |
value_type
|
bool |
type
|
std::integral_constant<bool, value> |
[bearbeiten] Mögliche Implementierung
template<class T> struct is_floating_point : std::integral_constant< bool, // Note: standard floating-point types std::is_same<float, typename std::remove_cv<T>::type>::value || std::is_same<double, typename std::remove_cv<T>::type>::value || std::is_same<long double, typename std::remove_cv<T>::type>::value // Note: extended floating-point types (C++23, if supported) || std::is_same<std::float16_t, typename std::remove_cv<T>::type>::value || std::is_same<std::float32_t, typename std::remove_cv<T>::type>::value || std::is_same<std::float64_t, typename std::remove_cv<T>::type>::value || std::is_same<std::float128_t, typename std::remove_cv<T>::type>::value || std::is_same<std::bfloat16_t, typename std::remove_cv<T>::type>::value > {}; |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <type_traits> class A {}; static_assert(!std::is_floating_point_v<A>); static_assert(std::is_floating_point_v<float>); static_assert(!std::is_floating_point_v<float&>); static_assert(std::is_floating_point_v<double>); static_assert(!std::is_floating_point_v<double&>); static_assert(!std::is_floating_point_v<int>); int main() {}
[bearbeiten] Siehe auch
| [static] |
identifiziert die IEC 559/IEEE 754 Gleitkommatypen (öffentliche statische Memberkonstante von std::numeric_limits<T>) |
| (C++11) |
prüft, ob ein Typ ein ganzzahliger Typ ist (Klassenvorlage) |
| (C++11) |
prüft, ob ein Typ ein arithmetischer Typ ist (Klassenvorlage) |
| (C++20) |
gibt an, dass ein Typ ein Fließkommatyp ist (Konzept) |