);static_assert(is_final_v);static_assert(!is_final_v);static_assert(is_final_v); â *end example*]
[9](#prop-9)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/meta.tex#L1628)
The predicate condition for a template specializationis_constructible shall be satisfied if and only if the
following variable definition would be well-formed for some invented variable t:
T t(declval()...);
[*Note [7](#prop-note-7)*:
These tokens are never interpreted as a function declaration[.](#prop-9.sentence-2)
â *end note*]
Access checking is performed as if in a context unrelated to T and any of the Args[.](#prop-9.sentence-3)
Only the validity of the immediate context of the
variable initialization is considered[.](#prop-9.sentence-4)
[*Note [8](#prop-note-8)*:
The evaluation of the
initialization can result in side effects such as the instantiation of class
template specializations and function template specializations, the generation
of implicitly-defined functions, and so on[.](#prop-9.sentence-5)
Such side effects are not in the
âimmediate contextâ and can result in the program being ill-formed[.](#prop-9.sentence-6)
â *end note*]
[10](#prop-10)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/meta.tex#L1652)
The predicate condition for a template specializationhas_unique_object_representations shall be satisfied if and only if
- [(10.1)](#prop-10.1)
T is trivially copyable, and
- [(10.2)](#prop-10.2)
any two objects of type T with the same value
have the same object representation, where
* [(10.2.1)](#prop-10.2.1)
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
* [(10.2.2)](#prop-10.2.2)
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[.](#prop-10.sentence-1)
The set of scalar types for which this condition holds isimplementation-defined[.](#prop-10.sentence-2)
[*Note [9](#prop-note-9)*:
If a type has padding bits, the condition does not hold;
otherwise, the condition holds true for integral types[.](#prop-10.sentence-3)
â *end note*]