| Technical Specification | ||||
| Filesystem library(filesystem TS) | ||||
| Library fundamentals(library fundamentals TS) | ||||
| Library fundamentals 2(library fundamentals TS v2) | ||||
| Library fundamentals 3(library fundamentals TS v3) | ||||
| Extensions for parallelism(parallelism TS) | ||||
| Extensions for parallelism 2(parallelism TS v2) | ||||
| Extensions for concurrency(concurrency TS) | ||||
| Extensions for concurrency 2(concurrency TS v2) | ||||
| Concepts(concepts TS) | ||||
| Ranges(ranges TS) | ||||
| Reflection(reflection TS) | ||||
| Mathematical special functions(special functions TR) | ||||
| Experimental Non-TS | ||||
| Pattern Matching | ||||
| Linear Algebra | ||||
| std::execution | ||||
| Contracts | ||||
| 2D Graphics |
Convenience aliases for containers usingpolymorphic_allocator | ||||
| Memory resource classes | ||||
resource_adaptor | ||||
| Global memory resources | ||||
| Type-erased allocator support for existing classes | ||||
Defined in header <experimental/memory_resource> | ||
template<class Alloc> using resource_adaptor=/*resource-adaptor-imp*/< | (library fundamentals TS) | |
template<class Alloc> class/*resource-adaptor-imp*/:public memory_resource;// for exposition only | (library fundamentals TS) | |
The alias templateresource_adaptor adapts the allocator typeAlloc with amemory_resource interface. The allocator is rebound to achar value type before it is actually adapted (using theresource-adaptor-imp class template), so that adapting specializations of the same allocator template always yields the same type, regardless of the value type the allocator template is originally instantiated with.
| (library fundamentals TS) (until library fundamentals TS v3) |
| (library fundamentals TS v3) |
resource-adaptor-imp is a class template whose members are described below. The nameresource-adaptor-imp is for exposition purposes only and not normative.
In addition to meeting theAllocator requirements,Alloc must additionally satisfy the following requirements:
| Member type | Definition |
allocator_type | Alloc |
/*resource-adaptor-imp*/()=default; | (1) | (library fundamentals TS) |
/*resource-adaptor-imp*/(const/*resource-adaptor-imp*/& other) =default; | (2) | (library fundamentals TS) |
/*resource-adaptor-imp*/(/*resource-adaptor-imp*/&& other) =default; | (3) | (library fundamentals TS) |
explicit/*resource-adaptor-imp*/(const Alloc& a2); | (4) | (library fundamentals TS) |
explicit/*resource-adaptor-imp*/(Alloc&& a2); | (5) | (library fundamentals TS) |
other.other.a2.| other | - | anotherresource-adaptor-imp object to copy or move from |
| a2 | - | anotherAlloc object to copy or move from |
allocator_type get_allocator()const; | (library fundamentals TS) | |
Returns a copy of the wrapped allocator.
/*resource-adaptor-imp*/& operator=(const/*resource-adaptor-imp*/& other) =default; | (library fundamentals TS) | |
Defaulted copy assignment operator. Copy assigns the wrapped allocator from that ofother.
protected: virtualvoid* do_allocate(std::size_t bytes,std::size_t alignment); | (library fundamentals TS) | |
Allocates memory using theallocate member function of the wrapped allocator.
protected: virtualvoid do_deallocate(void*p,std::size_t bytes,std::size_t alignment); | (library fundamentals TS) | |
Deallocates the storage pointed to byp using thedeallocate member function of the wrapped allocator.
p must have been allocated using theallocate member function of an allocator that compares equal to the wrapped allocator, and must not have been subsequently deallocated.
protected: virtualbool do_is_equal(const memory_resource& other)constnoexcept; | (library fundamentals TS) | |
Letp bedynamic_cast<const/*resource-adaptor-imp*/*>(&other). Ifp is a null pointer value, returnsfalse. Otherwise, return the result of comparing the allocators wrapped by*p and*this usingoperator==.