https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104386

--- Comment #2 from Artur Bać <gcc at ebasoft dot com.pl> ---
I think it is connected with this case

https://godbolt.org/z/cvfs1KqGW
https://godbolt.org/z/vdzTzo7be

//sizeof(foo) ==12
struct base
{
uint32_t x{};
std::byte v{};

base() noexcept = default;
};

struct foo : public base
{
std::byte z;
};

//sizeof(foo) == 8
struct base
{
uint32_t x;
std::byte v;

base() noexcept : x{}, v{} {}
};

struct foo : public base
{
std::byte z;
};

and

https://www.reddit.com/r/cpp/comments/slfugx/comment/hvs4n7j/?utm_source=share&utm_medium=web2x&context=3

"Som1Lse · 5 hr. ago

Interestingly GCC disagrees with itself:

    -std=c++17 it considers base to be a POD and doesn't reuse padding.
    -std=c++20 it considers base to not be a POD and agrees with Clang, reusing
the padding bytes."

Reply via email to