Although the compiler supports the [[no_unique_address]] attribute, it's not a reserved name prior to C++20, so we can't use it in std::tuple. Use [[__no_unique_address__]] instead.
libstdc++-v3/ChangeLog: * include/std/tuple (_Head_base<Idx, Head, true>): Use reserved form of __no_unique_address__ attribute because no_unique_address is not reserved prior to C++20. Tested powerpc64le-linux. Committed to trunk.
commit fc77484c4a4feb308c64371233cb65b280333953 Author: Jonathan Wakely <jwak...@redhat.com> Date: Mon Oct 19 17:57:14 2020 libstdc++: Use reserved name for C++20 attribute Although the compiler supports the [[no_unique_address]] attribute, it's not a reserved name prior to C++20, so we can't use it in std::tuple. Use [[__no_unique_address__]] instead. libstdc++-v3/ChangeLog: * include/std/tuple (_Head_base<Idx, Head, true>): Use reserved form of __no_unique_address__ attribute because no_unique_address is not reserved prior to C++20. diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple index 11ad1991108..adfd6213a14 100644 --- a/libstdc++-v3/include/std/tuple +++ b/libstdc++-v3/include/std/tuple @@ -122,7 +122,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION static constexpr const _Head& _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } - [[no_unique_address]] _Head _M_head_impl; + [[__no_unique_address__]] _Head _M_head_impl; }; #else template<size_t _Idx, typename _Head>