std:: is_pod
| Type traits | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time rational arithmetic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time integer sequences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(C++14)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definiert im Header
<type_traits>
|
||
|
template
<
class
T
>
struct is_pod ; |
(seit C++11)
(veraltet in C++20) |
|
std::is_pod
ist ein
UnaryTypeTrait
.
Wenn
T
ein
POD-Typ
("Plain Old Data Type") ist, liefert die Member-Konstante
value
den Wert
true
. Für jeden anderen Typ ist
value
false
.
Wenn std:: remove_all_extents_t < T > ein unvollständiger Typ ist und nicht (möglicherweise cv-qualifiziert) void , ist das Verhalten undefiniert.
Wenn das Programm Spezialisierungen für
std::is_pod
oder
std::is_pod_v
hinzufügt, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Template-Parameter
| T | - | ein zu prüfender Typ |
Hilfsvariablen-Template
|
template
<
class
T
>
constexpr bool is_pod_v = is_pod < T > :: value ; |
(seit C++17)
(veraltet in C++20) |
|
Geerbt von std:: integral_constant
Elementkonstanten
|
value
[static]
|
true
falls
T
ein POD-Typ ist,
false
andernfalls
(öffentliche statische Elementkonstante) |
Elementfunktionen
|
operator bool
|
konvertiert das Objekt zu
bool
, gibt
value
zurück
(öffentliche Elementfunktion) |
|
operator()
(C++14)
|
gibt
value
zurück
(öffentliche Elementfunktion) |
Elementtypen
| Typ | Definition |
value_type
|
bool |
type
|
std:: integral_constant < bool , value > |
Beispiel
#include <type_traits> struct A { int m; }; static_assert(std::is_pod_v<A> == true); class B: public A { int m; }; static_assert(std::is_pod_v<B> == false); struct C { virtual void foo(); }; static_assert(std::is_pod_v<C> == false); int main() {}
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2015 | C++11 |
T
könnte ein Array von unvollständigem
Klassentyp mit unbekannter Grenze sein |
das Verhalten ist
in diesem Fall undefiniert |
Siehe auch
|
(C++11)
|
prüft, ob ein Typ ein
Standard-Layout
Typ ist
(Klassentemplate) |
|
(C++11)
(veraltet in C++26)
|
prüft, ob ein Typ trivial ist
(Klassentemplate) |
|
(C++11)
|
prüft, ob ein Typ ein Skalartyp ist
(Klassentemplate) |
Externe Links
Warum wird
std::is_pod
in C++20 als veraltet markiert?
— StackOverflow
|