带有嵌套结构/类的 POD-ness

POD-ness with nested structs/classes

本文关键字:类的 POD-ness 结构 嵌套      更新时间:2023-10-16

我有一个关于 POD 的问题。我预计如果 B 是非 POD 并且 B 是 A 中的成员,那么 A 也是非 POD。但是,下面的代码示例输出"10",因此 B 被正确地视为非 POD,但 A 是。

struct A
{
    int i;
    struct B
    {
        std::string s;
    };
};
std::cout << std::is_pod<A>::value;
std::cout << std::is_pod<A::B>::value;

这是 GCC 中的错误吗?我正在使用"c ++ (GCC( 7.3.1 20180312"。我看不出这种行为的意义。假设我想优化缓冲区分配并使用 POD 检查来确定我是否必须对特定类型使用 new 或可以使用 malloc/realloc。使用 malloc 为 A 分配存储是完全错误的。此致敬意

A里面

有一个A::B类型。

A 的实例中没有A::B实例。只有类型的定义,但没有实例化。

B b;添加到A,您的异常就会消失。