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 | ||||
Global memory resources | ||||
Type-erased allocator support for existing classes | ||||
function()noexcept; | (1) | (library fundamentals TS) |
function(std::nullptr_t)noexcept; | (2) | (library fundamentals TS) |
function(const function& other); | (3) | (library fundamentals TS) |
function( function&& other); | (4) | (library fundamentals TS) |
template<class F> function( F f); | (5) | (library fundamentals TS) |
(6) | ||
template<class Alloc> function(std::allocator_arg_t,const Alloc& alloc)noexcept; | (library fundamentals TS) | |
function(std::allocator_arg_t, const allocator_type& alloc)noexcept; | (library fundamentals TS v3) | |
(7) | ||
template<class Alloc> function(std::allocator_arg_t,const Alloc& alloc, | (library fundamentals TS) | |
function(std::allocator_arg_t,const allocator_type& alloc, std::nullptr_t)noexcept; | (library fundamentals TS v3) | |
(8) | ||
template<class Alloc> function(std::allocator_arg_t,const Alloc& alloc, | (library fundamentals TS) | |
function(std::allocator_arg_t,const allocator_type& alloc, const function& other); | (library fundamentals TS v3) | |
(9) | ||
template<class Alloc> function(std::allocator_arg_t,const Alloc& alloc, | (library fundamentals TS) | |
function(std::allocator_arg_t,const allocator_type& alloc, function&& other); | (library fundamentals TS v3) | |
(10) | ||
template<class F,class Alloc> function(std::allocator_arg_t,const Alloc& alloc, F f); | (library fundamentals TS) | |
function(std::allocator_arg_t,const allocator_type& alloc, F f); | (library fundamentals TS v3) | |
Constructs astd::experimental::function
from a variety of sources.
Args...
and return typeR
.function
might use.These constructors treatalloc as a type-erased allocator (see below).(until library fundamentals TS v3)After construction via(1-5),this->get_memory_resource() returns the same value asstd::experimental::pmr::get_default_resource() during construction. | (library fundamentals TS) (until library fundamentals TS v3) |
After construction via(1-3) and(5),*this stores a default constructedstd::pmr::polymorphic_allocator<>. | (library fundamentals TS v3) |
When thetarget is a function pointer or astd::reference_wrapper, small object optimization is guaranteed, that is, these targets are always directly stored inside thestd::experimental::function object, no dynamic allocation takes place. Other large objects may be constructed in dynamic allocated storage and accessed by thestd::experimental::function object through a pointer.
If a constructor moves or copies a function object, including an instance ofstd::experimental::function
, then that move or copy is performed byusing-allocator construction with allocatorthis->get_memory_resource()(until library fundamentals TS v3)this->get_allocator()(library fundamentals TS v3).
Contents |
The constructors offunction
taking an allocator argumentalloc
treats that argument as a type-erased allocator. The memory resource pointer used byfunction
to allocate memory is determined using the allocator argument (if specified) as follows:
Type ofalloc | Value of the memory resource pointer |
Non-existent (no allocator specified at time of construction) | The value ofstd::experimental::pmr::get_default_resource() at time of construction. |
std::nullptr_t | The value ofstd::experimental::pmr::get_default_resource() at time of construction. |
A pointer type convertible to std::experimental::pmr::memory_resource* | static_cast<std::experimental::pmr::memory_resource*>(alloc) |
A specialization of std::experimental::pmr::polymorphic_allocator | alloc.resource() |
Any other type meeting theAllocator requirements | A pointer to a value of typestd::experimental::pmr::resource_adaptor<A>(alloc), whereA is the type ofalloc . The pointer remains valid only for the lifetime of thefunction object. |
None of the above | The program is ill-formed. |
other | - | the function object used to initialize*this |
f | - | a callable used to initialize*this |
alloc | - | an allocator used for internal memory allocation |
Type requirements | ||
-F must meet the requirements ofCallable andCopyConstructible. |
This section is incomplete Reason: no example |