| 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 |