Index: include/memory =================================================================== --- include/memory +++ include/memory @@ -2533,11 +2533,16 @@ template _LIBCPP_INLINE_VISIBILITY default_delete(const default_delete<_Up>&, typename enable_if::value>::type* = 0) _NOEXCEPT {} - _LIBCPP_INLINE_VISIBILITY void operator() (_Tp* __ptr) const _NOEXCEPT + + _LIBCPP_INLINE_VISIBILITY void + operator() (_Tp* __ptr) const _NOEXCEPT { static_assert(sizeof(_Tp) > 0, "default_delete can not delete incomplete type"); static_assert(!is_void<_Tp>::value, "default_delete can not delete incomplete type"); - delete __ptr; + if ( is_array<_Tp>::value ) + delete [] __ptr; + else + delete __ptr; } };