From 06defa27d3c3ea0cd3c3f4afef31fc486fa30037 Mon Sep 17 00:00:00 2001 From: "A. Jiang" Date: Mon, 23 Dec 2024 08:48:57 +0800 Subject: [PATCH] Implement LWG-4144 --- stl/inc/memory | 8 ++++++++ 1 file changed, 8 insertions(+) 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;