|
template<typename A = Alloc> |
| shared () noexcept(std::is_nothrow_default_constructible_v< block >) |
|
template<typename... Args, typename = std::enable_if_t< std::is_constructible_v<Alloc, Args...>>> |
| shared (Args &&... alloc) noexcept(std::is_nothrow_constructible_v< block, Args... >) |
| Constructor for forwarding any arguments to the underlying allocator. More...
|
|
| shared (const shared &other) noexcept |
|
| shared (shared &&other) noexcept |
|
| ~shared () |
|
shared & | operator= (const shared &rhs) noexcept(noexcept(decrement())) |
|
shared & | operator= (shared &&rhs) noexcept(noexcept(decrement())) |
|
bool | operator== (const shared &rhs) const noexcept(detail::has_nothrow_equal_v< Alloc >) |
|
bool | operator!= (const shared &rhs) const noexcept(detail::has_nothrow_not_equal_v< Alloc >) |
|
void * | allocate (size_t n) noexcept(detail::has_nothrow_allocate_v< Alloc >) |
|
void | deallocate (void *p, size_t n) noexcept(detail::has_nothrow_deallocate_v< Alloc >) |
|
template<typename T , typename... Args> |
std::enable_if< detail::has_construct_v< Alloc, T *, Args... >, void >::type | construct (T *p, Args &&... args) noexcept(detail::has_nothrow_construct_v< Alloc, T *, Args... >) |
|
template<typename T > |
std::enable_if< detail::has_destroy_v< Alloc, T * >, void >::type | destroy (T *p) noexcept(detail::has_nothrow_destroy_v< Alloc, T * >) |
|
template<typename A = Alloc> |
std::enable_if< detail::has_max_size_v< A >, size_type >::type | max_size () const noexcept(detail::has_nothrow_max_size_v< A >) |
|
template<typename A = Alloc> |
std::enable_if< detail::has_owns_v< A >, bool >::type | owns (void *p) const noexcept(detail::has_nothrow_owns_v< A >) |
|
Alloc & | get_allocator () noexcept |
|
const Alloc & | get_allocator () const noexcept |
|
template<typename Alloc , template< typename > typename Atomic>
template<typename... Args, typename = std::enable_if_t< std::is_constructible_v<Alloc, Args...>>>
Constructor for forwarding any arguments to the underlying allocator.