P0258R2

2016-06-24

Michael Spencer <bigcheesegs@gmail.com>

Audience: LWG

`<type_traits>`

synopsis [meta.type.synop]Add to synopsis.

```
````template <class T> struct has_unique_object_representations;`

Add to table 52 - Type property predicates.

Template Condition Preconditions `template <class T> struct has_unique_object_representations;`

For an array type `T`

, the same result as`has_unique_object_representations<remove_all_extents_t<T>>::value`

, otherwisesee below`T`

shall be a complete type, (possibly cv-qualified)`void`

, or an array of unknown bound.

Add a paragraph

The predicate condition for a template specialization

`has_unique_object_representations<T>::value`

shall be satisfied if and only if:

`T`

is trivially copyable, and- any two objects of type
`T`

with the same value have the same object representation, where two objects of array or non-union class type are considered to have the same value if their respective sequences of direct subobjects have the same values, and two objects of union type are considered to have the same value if they have the same active member and the corresponding members have the same value.The set of scalar types for which this condition holds is implementation defined. [

Note:If a type has padding bits, the condition does not hold; otherwise, the condition holds true for unsigned integral types.—end note]