Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/named req/Erasable"

From cppreference.com
< cpp‎ | named req
m (Text replace - "{{concept" to "{{named req")
m (Notes)
Line 24: Line 24:
  
 
===Notes===
 
===Notes===
All [[cpp/container|standard library containers]] require that their element type satisfies Erasable.
+
All [[cpp/container|standard library containers]] require that their element type satisfies {{named req/core|Erasable}}.
  
 
With the default allocator, this requirement is equivalent to the validity of {{c|p->~T()}}, which accepts class types with accessible destructors and all scalar types, but rejects array types, function types, reference types, and void.
 
With the default allocator, this requirement is equivalent to the validity of {{c|p->~T()}}, which accepts class types with accessible destructors and all scalar types, but rejects array types, function types, reference types, and void.

Revision as of 01:12, 17 June 2018

 
 
C++ named requirements
 

Specifies that an object of the type can be destroyed by a given Allocator.

Requirements

The type T is Erasable from the Container X whose value_type is identical to T if, given

A an allocator type
m an lvalue of type A
p the pointer of type T* prepared by the container

where X::allocator_type is identical to std::allocator_traits<A>::rebind_alloc<T>,

the following expression is well-formed:

std::allocator_traits<A>::destroy(m, p);

If X is not allocator-aware, the term is defined as if A were std::allocator<T>, except that no allocator object needs to be created, and user-defined specializations of std::allocator are not instantiated.

Notes

All standard library containers require that their element type satisfies Erasable.

With the default allocator, this requirement is equivalent to the validity of p->~T(), which accepts class types with accessible destructors and all scalar types, but rejects array types, function types, reference types, and void.

See Also

CopyInsertable
MoveInsertable
EmplaceConstructible
Destructible