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.
is_trivially_destructible_v<int>
?Section: 21.3.5.4 [meta.unary.prop] Status: C++20 Submitter: Richard Smith Opened: 2017-06-01 Last modified: 2021-02-25
Priority: Not Prioritized
View other active issues in [meta.unary.prop].
View all other issues in [meta.unary.prop].
View all issues with C++20 status.
Discussion:
The spec for is_trivially_destructible
says the value is true if "is_destructible_v<T>
is true
and the indicated destructor is known to be trivial."
is_trivially_destructible_v<int>
, there is no indicated destructor, so it's unclear what value
the trait would have but the most plausible reading of these words is that it should be false
. However, I'm confident
the intent is that this trait should yield true
in that situation, and that's what all the implementations I can
find actually do.
[2017-06-14, Daniel and Jonathan provide wording]
[2017-07-05 Moved to Tentatively Ready after 5 positive votes on c++std-lib.]
Proposed resolution:
This wording is relative to N4659.Change 21.3.5.4 [meta.unary.prop], Table 42 — "Type property predicates", as indicated:
Table 22 — Type property predicates Template Condition Preconditions …
template <class T>
struct is_trivially_destructible;is_destructible_v<T>
istrue
andthe indicated destructor is known to be trivialremove_all_extents_t<T>
is either a non-class type or a class type with a trivial destructor.T
shall be a complete type, cvvoid
, or an array of unknown bound.…