https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104266
--- Comment #4 from Fedor Chelnokov <fchelnokov at gmail dot com> --- In your last example, I think Clang is right, because `Y` is not an aggregate in C++11 due to the presence of default member initializer. And it becomes an aggregate only in C++14.