阅读量:95
在C++11之前,可以使用std::is_pod模板类来判断一个类型是否是POD(Plain Old Data)类型。示例如下:
#include
#include
struct A {
int x;
};
struct B {
int x;
int y;
};
int main() {
bool is_A_pod = std::is_pod::value;
bool is_B_pod = std::is_pod::value;
std::cout << "A is POD: " << is class="hljs-string">"B is POD: " << is class="hljs-keyword">return 0;
}
在C++11及以后的版本中,可以使用std::is_standard_layout和std::is_trivial来判断一个类型是否是POD类型。示例如下:
#include
#include
struct A {
int x;
};
struct B {
int x;
int y;
};
int main() {
bool is_A_pod = std::is_standard_layout::value && std::is_trivial::value;
bool is_B_pod = std::is_standard_layout::value && std::is_trivial::value;
std::cout << "A is POD: " << is class="hljs-string">"B is POD: " << is class="hljs-keyword">return 0;
}
以上示例中,类型A是POD类型,因为它是标准布局且是平凡的,而类型B不是POD类型,因为它有多个成员变量。POD类型通常是一种简单的数据结构,没有虚函数、基类、成员包含非POD类型等。