Section: 184.108.40.206 [meta.trans.other] Status: C++20 Submitter: Casey Carter Opened: 2017-11-12 Last modified: 2021-02-25 10:48:01 UTC
View all other issues in [meta.trans.other].
View all issues with C++20 status.
P0767R1 "Expunge POD" changed the requirement for several library types from "POD" to "trivial." Since these types no longer provide/require the standard-layout portion of "POD," the change breaks:
The fix is straight-forward: apply an additional standard-layout requirement to the affected types:
[ 2017-11-14 Moved to Tentatively Ready after 8 positive votes for P0 on c++std-lib. ]
[2018-3-17 Adopted in Jacksonville]
This wording is relative to N4700 + P0767R1.
Change in 17.2.4 [support.types.layout] paragraph 5:
The type max_align_t is a trivial type whose alignment requirement is at least as great as that of every scalar type, and whose alignment requirement is supported in every context (6.7.6 [basic.align]).
Change the table in 220.127.116.11 [meta.trans.other] as indicated:
The member typedef type shall be a trivial type suitable for use as uninitialized storage for any object whose size is at most Len and whose alignment is a divisor of Align.
The member typedef type shall be a trivial type suitable for use as uninitialized storage for any object whose type is listed in Types; its size shall be at least Len.
Change 23.1 [strings.general] paragraph 1 as indicated:
This Clause describes components for manipulating sequences of any non-array trivial (6.8 [basic.types]) type. Such types are called char-like types, and objects of char-like types are called char-like objects or simply characters.