A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://cplusplus.github.io/LWG/issue673 below:

Issue 673: unique_ptr update

Change 20.3.1.3 [unique.ptr.single]:

template <class T, class D = default_delete<T>> class unique_ptr {
public:
  typedef implementation (see description below) pointer;
   ...
   explicit unique_ptr(T* pointer p);
   ...
   unique_ptr(T* pointer p, implementation defined (see description below) d);
   unique_ptr(T* pointer p, implementation defined (see description below) d);
   ...
   T* pointer operator->() const;
   T* pointer get() const;
   ...
   T* pointer release();
   void reset(T* pointer p = 0 pointer());
};

-3- If the type remove_reference<D>::type::pointer exists, then unique_ptr<T, D>::pointer is a typedef to remove_reference<D>::type::pointer. Otherwise unique_ptr<T, D>::pointer is a typedef to T*. The type unique_ptr<T, D>::pointer shall be CopyConstructible and CopyAssignable.

Change 20.3.1.3.2 [unique.ptr.single.ctor]:

unique_ptr(T* pointer p);
...
unique_ptr(T* pointer p, implementation defined d); 
unique_ptr(T* pointer p, implementation defined d); 
...
unique_ptr(T* pointer p, const A& d);
unique_ptr(T* pointer p, A&& d);
...
unique_ptr(T* pointer p, A& d); 
unique_ptr(T* pointer p, A&& d);
...
unique_ptr(T* pointer p, const A& d); 
unique_ptr(T* pointer p, const A&& d);
...

-23- Requires: If D is not a reference type, construction of the deleter D from an rvalue of type E must shall be well formed and not throw an exception. If D is a reference type, then E must shall be the same type as D (diagnostic required). U* unique_ptr<U,E>::pointer must shall be implicitly convertible to T* pointer.

-25- Postconditions: get() == value u.get() had before the construction, modulo any required offset adjustments resulting from the cast from U* unique_ptr<U,E>::pointer to T* pointer. get_deleter() returns a reference to the internally stored deleter which was constructed from u.get_deleter().

Change 20.3.1.3.4 [unique.ptr.single.asgn]:

-8- Requires: Assignment of the deleter D from an rvalue D must shall not throw an exception. U* unique_ptr<U,E>::pointer must shall be implicitly convertible to T* pointer.

Change 20.3.1.3.5 [unique.ptr.single.observers]:

T* pointer operator->() const;

...

T* pointer get() const;

Change 20.3.1.3.6 [unique.ptr.single.modifiers]:

T* pointer release();

...

void reset(T* pointer p = 0 pointer());

Change 20.3.1.4 [unique.ptr.runtime]:

template <class T, class D> class unique_ptr<T[], D> {
public:
  typedef implementation pointer;
   ...
   explicit unique_ptr(T* pointer p);
   ...
   unique_ptr(T* pointer p, implementation defined d);
   unique_ptr(T* pointer p, implementation defined d);
   ...
   T* pointer get() const;
   ...
   T* pointer release();
   void reset(T* pointer p = 0 pointer());
};

Change 20.3.1.4.2 [unique.ptr.runtime.ctor]:

unique_ptr(T* pointer p);
unique_ptr(T* pointer p, implementation defined d);
unique_ptr(T* pointer p, implementation defined d);

These constructors behave the same as in the primary template except that they do not accept pointer types which are convertible to T* pointer. [Note: One implementation technique is to create private templated overloads of these members. -- end note]

Change 20.3.1.4.5 [unique.ptr.runtime.modifiers]:

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]


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