Proposed resolution:
Modify the pre-conditions of the following type traits in [meta.unary.prop], Table 48 — Type property predicates:
Table 48 — Type property predicates Template Condition Preconditions ... template <class T>
struct is_trivial;T is a trivial type (3.9) remove_all_extents<T>::type
shall be a complete type,or (possibly
cv-qualified) void, or an array of.
unknown boundtemplate <class T>
struct is_trivially_copyable;T is a trivially copyable
type (3.9)remove_all_extents<T>::type
shall be a complete type,or (possibly
cv-qualified) void, or an array of.
unknown boundtemplate <class T>
struct is_standard_layout;T is a standard-layout
type (3.9)remove_all_extents<T>::type
shall be a complete type,or (possibly
cv-qualified) void, or an array of.
unknown boundtemplate <class T>
struct is_pod;T is a POD type (3.9) remove_all_extents<T>::type
shall be a complete type,or (possibly
cv-qualified) void, or an array of.
unknown boundtemplate <class T>
struct is_literal_type;T is a literal type (3.9) remove_all_extents<T>::type
shall be a complete type,or (possibly
cv-qualified) void, or an array of.
unknown boundtemplate <class T>
struct is_empty;T is a class type, but not a
union type, with no
non-static data members
other than bit-fields of
length 0, no virtual
member functions, no
virtual base classes, and
no base class B for which
is_empty<B>::value is
false.T shall be a complete type,If T
(possibly cv-qualified) void, or
an array of unknown bound
is a non‑union class type, T
shall be a complete type.template <class T>
struct is_polymorphic;T is a polymorphic
class (10.3)T shall be a complete type,If T
type, (possibly cv-qualified) void, or
an array of unknown bound
is a non‑union class type, T
shall be a complete type.template <class T>
struct is_abstract;T is an abstract
class (10.4)T shall be a complete type,If T
type, (possibly cv-qualified) void, or
an array of unknown bound
is a non‑union class type, T
shall be a complete type.... template <class T>
struct has_virtual_destructor;T has a virtual
destructor (12.4)T shall be a complete type,If T
(possibly cv-qualified) void, or
an array of unknown bound
is a non‑union class type, T
shall be a complete type.
Modify the pre-conditions of the following type traits in [meta.rel], Table 50 — Type relationship predicates:
Table 50 — Type relationship predicates Template Condition Comments ... template <class Base, class
Derived>
struct is_base_of;Base is a base class of
Derived (10) without
regard to cv-qualifiers
or Base and Derived
are not unions and
name the same class
type without regard to
cv-qualifiersIf Base and Derived are
non‑union class types
and are different types
(ignoring possible cv-qualifiers)
then Derived shall be a complete
type. [ Note: Base classes that
are private, protected, or
ambigious are, nonetheless, base
classes. — end note ]...