diff --git a/README.md b/README.md index 4e457a7..366faa9 100644 --- a/README.md +++ b/README.md @@ -122,46 +122,46 @@ Synopsis |   |– |– |   | const_reference |  | | Lifetime types |✓|– |   | cloner_type |[2]: copier_type | |   |✓|✓|   | deleter_type |  | -| Construction |✓|✓|   | value_ptr() noexcept |... | -|   |– |✓| C++11 | value_ptr( std::nullptr_t ) noexcept|... | -|   |✓|– |   | value_ptr( pointer p ) noexcept |... | -|   |✓|✓|   | value_ptr( value_ptr const & other ) |... | -|   |✓|✓| C++11 | value_ptr( value_ptr && other ) noexcept |... | -|   |✓| 1 |   | value_ptr( element_type const & value ) |... | -|   |✓| 1 | C++11 | value_ptr( element_type && value ) noexcept |... | -|   |– |– | C++11 | template< class... Args >
explicit value_ptr( in_place_type_t(T), Args&&... args ) |... | -|   |– |– | C++11 | template< class U, class... Args >
explicit value_ptr( in_place_type_t(T), std::initializer_list<U> il, Args&&... args ) |... | -|   |✓|– |   | value_ptr( cloner_type const & cloner ) |... | -|   |✓|– | C++11 | value_ptr( cloner_type && cloner ) noexcept |... | -|   |– |– |   | value_ptr( deleter_type const & deleter ) |... | -|   |– |– | C++11 | value_ptr( deleter_type && deleter ) noexcept |... | -|   |✓|– | C++11 | template< class V, class ClonerOrDeleter >
value_ptr( V && value, ClonerOrDeleter && cloner_or_deleter ) |... | -|   |– |– |
value_ptr( V const & value, ClonerOrDeleter const & cloner_or_deleter ) |... | -|   |✓|– | C++11 | template< class V, class C, class D >
value_ptr( V && value, C && cloner, D && deleter ) |... | -|   |– |– |
value_ptr( V const & value, C const & cloner, D const & deleter ) |... | -| Destruction |– |– | C++11 | ~value_ptr() |... | -| Assignment |– |– | C++11 | value_ptr & operator=( std::nullptr_t ) noexcept |... | -|   |– |– |   | value_ptr & operator=( T const & value ) |... | -|   |– |– | C++11 | template< class U, ... >
value_ptr & operator=( U && value ) |... | -|   |– |✓|   | value_ptr & operator=( value_ptr const & rhs ) |... | -|   |– |✓| C++11 | value_ptr & operator=( value_ptr && rhs ) noexcept |... | -| Emplace |– |– | C++11 | template< class... Args >
void emplace( Args&&... args ) |... | -|   |– |– | C++11 | template< class U, class... Args >
void emplace( std::initializer_list<U> il, Args&&... args ) |... | -| Observers |✓|✓|   | pointer get() noexcept |... | +| Construction |✓|✓|   | value_ptr() noexcept |  | +|   |– |✓| C++11 | value_ptr( std::nullptr_t ) noexcept|  | +|   |✓|– |   | value_ptr( pointer p ) noexcept |  | +|   |✓|✓|   | value_ptr( value_ptr const & other ) |  | +|   |✓|✓| C++11 | value_ptr( value_ptr && other ) noexcept |  | +|   |✓| 1 |   | value_ptr( element_type const & value ) |  | +|   |✓| 1 | C++11 | value_ptr( element_type && value ) noexcept |  | +|   |– |– | C++11 | template< class... Args >
explicit value_ptr( in_place_type_t(T), Args&&... args ) |  | +|   |– |– | C++11 | template< class U, class... Args >
explicit value_ptr( in_place_type_t(T), std::initializer_list<U> il, Args&&... args ) |  | +|   |✓|– |   | value_ptr( cloner_type const & cloner ) |  | +|   |✓|– | C++11 | value_ptr( cloner_type && cloner ) noexcept |  | +|   |– |– |   | value_ptr( deleter_type const & deleter ) |  | +|   |– |– | C++11 | value_ptr( deleter_type && deleter ) noexcept |  | +|   |✓|– | C++11 | template< class V, class ClonerOrDeleter >
value_ptr( V && value, ClonerOrDeleter && cloner_or_deleter ) |  | +|   |– |– |
value_ptr( V const & value, ClonerOrDeleter const & cloner_or_deleter ) |  | +|   |✓|– | C++11 | template< class V, class C, class D >
value_ptr( V && value, C && cloner, D && deleter ) |  | +|   |– |– |
value_ptr( V const & value, C const & cloner, D const & deleter ) |  | +| Destruction |– |– | C++11 | ~value_ptr() |  | +| Assignment |– |– | C++11 | value_ptr & operator=( std::nullptr_t ) noexcept |  | +|   |– |– |   | value_ptr & operator=( T const & value ) |  | +|   |– |– | C++11 | template< class U, ... >
value_ptr & operator=( U && value ) |  | +|   |– |✓|   | value_ptr & operator=( value_ptr const & rhs ) |  | +|   |– |✓| C++11 | value_ptr & operator=( value_ptr && rhs ) noexcept |  | +| Emplace |– |– | C++11 | template< class... Args >
void emplace( Args&&... args ) |  | +|   |– |– | C++11 | template< class U, class... Args >
void emplace( std::initializer_list<U> il, Args&&... args ) |  | +| Observers |✓|✓|   | pointer get() noexcept |  | |   |✓|✓|   | cloner_type & get_cloner() noexcept |[2]: get_copier() | -|   |✓|✓|   | deleter_type & get_deleter() noexcept |... | -|   |✓|✓|   | reference operator*() const |... | -|   |✓|✓|   | pointer operator->() const noexcept |... | -|   |✓|✓| C++11 | explicit operator bool() const noexcept |... | -|   |– |– |
constexpr element_type value_or( U && v ) const |... | -|   |– |– |
constexpr element_type value_or( U const & v ) const |... | -| Modifiers |✓|✓|   | pointer release() noexcept |... | -|   |– |– |   | void reset( pointer p = pointer() ) noexcept |... | -|   |– |✓|   | void swap( value_ptr & other ) noexcept |... | +|   |✓|✓|   | deleter_type & get_deleter() noexcept |  | +|   |✓|✓|   | reference operator*() const |  | +|   |✓|✓|   | pointer operator->() const noexcept |  | +|   |✓|✓| C++11 | explicit operator bool() const noexcept |  | +|   |– |– |
constexpr element_type value_or( U && v ) const |  | +|   |– |– |
constexpr element_type value_or( U const & v ) const |  | +| Modifiers |✓|✓|   | pointer release() noexcept |  | +|   |– |– |   | void reset( pointer p = pointer() ) noexcept |  | +|   |– |✓|   | void swap( value_ptr & other ) noexcept |  | **Notes:**
1. [2] has various converting constructors.