This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++11 status.
821. Minor cleanup :unique_ptr
Section: 20.3.1.4.5 [unique.ptr.runtime.modifiers] Status: C++11 Submitter: Alisdair Meredith Opened: 2008-03-30 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [unique.ptr.runtime.modifiers].
View all issues with C++11 status.
Discussion:
Reading resolution of LWG issue 673(i) I noticed the following:
void reset(T* pointer p = 0 pointer());-1- Requires: Does not accept pointer types which are convertible to
T*
pointer
(diagnostic required). [Note: One implementation technique is to create a private templated overload. -- end note]
This could be cleaned up by mandating the overload as a public deleted function. In addition, we should probably overload reset
on nullptr_t
to be a stronger match than the deleted overload. Words...
Proposed resolution:
Add to class template definition in 20.3.1.4 [unique.ptr.runtime]
// modifiers pointer release(); void reset(pointer p = pointer()); void reset( nullptr_t ); template< typename U > void reset( U ) = delete; void swap(unique_ptr&& u);
Update 20.3.1.4.5 [unique.ptr.runtime.modifiers]
void reset(pointer p = pointer()); void reset(nullptr_t);-1- Requires: Does not accept pointer types which are convertible to
pointer
(diagnostic required). [Note: One implementation technique is to create a private templated overload. -- end note]Effects: If
get() == nullptr
there are no effects. Otherwiseget_deleter()(get())
....
[ Note this wording incorporates resolutions for 806(i) (New) and 673(i) (Ready). ]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4