Namensräume
Varianten
Aktionen

std::is_floating_point

Von cppreference.com
< cpp‎ | types
 
 
Metaprogrammierungsbibliothek
Typmerkmale
Typkategorien
(C++11)
(C++11)(DR*)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11) 
(C++11)
(C++11)
is_floating_point
(C++11)  
Typeneigenschaften
(C++11)
(C++11)
(C++14)
(C++11)(deprecated in C++26)
(C++11)(bis C++20*)
(C++11)(veraltet in C++20)
(C++11)
Typmerkmalskonstanten
Metafunktionen
(C++17)
Unterstützte Operationen
Beziehungen und Eigenschaftsabfragen
Typmodifikationen
(C++11)(C++11)(C++11)
Typentransformationen
(C++11)(veraltet in C++23)
(C++11)(veraltet in C++23)
(C++11)
(C++11)(bis C++20*)(C++17)

(C++11)
(C++11)
(C++17)
Rationale Arithmetik zur Compilezeit
Ganzzahlsequenzen zur Compilezeit
 
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

#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>) [bearbeiten]
prüft, ob ein Typ ein ganzzahliger Typ ist
(Klassenvorlage) [bearbeiten]
prüft, ob ein Typ ein arithmetischer Typ ist
(Klassenvorlage) [bearbeiten]
gibt an, dass ein Typ ein Fließkommatyp ist
(Konzept) [bearbeiten]