> On Mon, 13 Dec 2021 at 05:14, Andrew Pinski wrote:
> >
> > On Sun, Dec 12, 2021 at 9:04 PM Nayan Deshmukh via Gcc <gcc@gcc.gnu.org> 
> >wrote:
> > > #include <iostream>
> > > #include <stdint.h>
> > > #include <cstddef>
> > > struct A {
> > >   int a;
> > >   uint64_t b;
> > >   int c = -1;
> > > };
> >
> > The question becomes is the above a standard layout class or not. I
> > Noticed clang does not change the rules for layout between C++11 and
> > C++14 but GCC does.
> > I don't know the exact rules in the ABI to help you there but I do
> > think you should file a bug because it definitely looks unexpected
> > really.
>  
> The C++14 behaviour started with https://gcc.gnu.org/r216750
>  
>    Implement N3653 (Member initializers and aggregates) and fix
> references to 'this' in constexpr cons
> tructors.
>  
>            Implement N3653 (Member initializers and aggregates) and fix
>            references to 'this' in constexpr constructors.
>            * class.c (check_field_decls): In C++14 an NSDMI does not make the
>            class non-aggregate.
>  
> But I think the layout should be using "POD for the purpose of
> layout", which means the C++98 POD rules. Please do report it to
> bugzilla.
 
I file a bug for this issue in bugzilla: 
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103681

Thanks,
Nayan

Reply via email to