43 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -verify -std=c++2a %s2// expected-no-diagnostics3 4struct Empty {};5 6struct A {7 [[no_unique_address]] Empty e;8 char x;9};10 11static_assert(__has_unique_object_representations(A));12 13struct B {14 char x;15 [[no_unique_address]] Empty e;16};17 18static_assert(__has_unique_object_representations(B));19 20struct C {21 char x;22 [[no_unique_address]] Empty e1;23 [[no_unique_address]] Empty e2;24};25 26static_assert(!__has_unique_object_representations(C));27 28namespace TailPaddingReuse {29struct A {30private:31 int a;32 33public:34 char b;35};36 37struct B {38 [[no_unique_address]] A a;39 char c[3];40};41} // namespace TailPaddingReuse42static_assert(__has_unique_object_representations(TailPaddingReuse::B));43