tuple should be a literal type if its elements are literal
types; it fails because the destructor is not necessarily trivial.
It should follow the form of optional and variant, and mandate a
trivial destructor if all types in Types... have a trivial destructor. It is not
clear if pair has the same issue, as pair specifies data
members first and second, and appears to have an
implicitly declared and defined destructor.

Suggested resolution:

Document the destructor for tuple, and mandate that
it is trivial if each of the elements in the tuple has a
trivial destructor. Consider whether the same
specification is needed for pair.

[2016-11-09, Jonathan provides wording]

[Issues Telecon 16-Dec-2016]

Move to Review; we think this is right, but are awaiting implementation experience.

-2- The defaulted move and copy constructor, respectively, of pair shall be a constexpr function
if and only if all required element-wise initializations for copy and move, respectively, would satisfy the requirements for a
constexpr function. The destructor of pair shall be a trivial destructor if
(is_trivially_destructible_v<T1> && is_trivially_destructible_v<T2>) is true.