| // These classes are technically zero-sized, but despite that they still don't |
| // get an `_address` field inserted. |
| |
| /** |
| * Bizarrely enough, this should *not* get an `_address` field. |
| */ |
| class ZeroSizedArray { |
| char arr[0]; |
| }; |
| |
| /** |
| * And nor should this get an `_address` field. |
| */ |
| class ContainsZeroSizedArray { |
| ZeroSizedArray zsa; |
| }; |
| |
| /** |
| * Inheriting from ZeroSizedArray shouldn't cause an `_address` to be inserted |
| * either. |
| */ |
| class InheritsZeroSizedArray : ZeroSizedArray {}; |
| |
| // These are dynamically sized, which means that `sizeof` yields `0` but it |
| // isn't really true. We shouldn't add an `_address` field to them. |
| |
| /** |
| * And this should not get an `_address` field either. |
| */ |
| class DynamicallySizedArray { |
| char arr[]; |
| }; |
| |
| /** |
| * No `_address` field here either. |
| */ |
| class ContainsDynamicallySizedArray { |
| DynamicallySizedArray dsa; |
| }; |
| |
| // Note: this is disallowed: |
| // |
| // error: base class 'DynamicallySizedArray' has a flexible array member |
| // |
| // class InheritsDynamicallySizedArray : DynamicallySizedArray {}; |