Proposed resolution:
Update [meta.unary.prop], table 49:
template <class T> struct is_destructible; |
For reference types, is_destructible<T>::value is true. For incomplete types and function types, is_destructible<T>::value is false. For object types and given U equal to remove_all_extents<T>::type, if the expression std::declval<U&>().~U() is well-formed when treated as an unevaluated operand (Clause [expr]), then is_destructible<T>::value is true, otherwise it is false. |
T shall be a complete type, (possibly cv-qualified) void, or an array of unknown bound. |