diff --git a/stl/inc/memory b/stl/inc/memory index 864f44f90af..88b630d8ead 100644 --- a/stl/inc/memory +++ b/stl/inc/memory @@ -3329,9 +3329,17 @@ template using _Unique_ptr_enable_default_t = enable_if_t>, is_default_constructible<_Dx2>>, int>; +template +constexpr bool _Can_form_pointer = false; +template +constexpr bool _Can_form_pointer<_Ty, void_t<_Ty*>> = true; + _EXPORT_STD template */> class unique_ptr { // non-copyable pointer to an object public: + static_assert(_Can_form_pointer<_Ty>, + "unique_ptr requires T* to be a valid type (N5001 [unique.ptr.single.general]/1)."); + using pointer = typename _Get_deleter_pointer_type<_Ty, remove_reference_t<_Dx>>::type; using element_type = _Ty; using deleter_type = _Dx;