This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++20 status.

### 2979. `aligned_union` should require complete object types

Section: 21.3.8.7 [meta.trans.other] Status: C++20 Submitter: Tim Song Opened: 2017-06-14 Last modified: 2021-02-25

Priority: 0

View all other issues in [meta.trans.other].

View all issues with C++20 status.

Discussion:

`aligned_union`'s description doesn't, but should, require the types provided to be complete object types.

[2017-07 Toronto Monday issue prioritization]

Priority 0; move to Ready

Proposed resolution:

This wording is relative to N4659.

1. In 21.3.8.7 [meta.trans.other], edit Table 50 "Other transformations" as indicated:

   > Table 50 — Other transformations
   > Template | Comments
   > --- | ---
   > `[…]`
   > `template <size_t Len, class... Types> struct aligned_union;` | The member typedef `type` shall be a POD type suitable for use as uninitialized storage for any object whose type is listed in `Types`; its size shall be at least `Len`. The static member `alignment_value` shall be an integral constant of type `size_t` whose value is the strictest alignment of all types listed in `Types`. Requires: At least one type is provided. Each type in the parameter pack `Types` shall be a complete object type.
   > `[…]`