std::move_only_function
Defined in header <functional>
|
||
template< class... > class move_only_function; // not defined |
(1) | (since C++23) |
template< class R, class... Args > class move_only_function<R(Args...)>; |
(2) | (since C++23) |
Class template std::move_only_function
is a general-purpose polymorphic function wrapper. std::move_only_function
objects can store and invoke any constructible (not required to be move constructible) Callable target — functions, lambda expressions, bind expressions, or other function objects, as well as pointers to member functions and pointers to member objects.
The stored callable object is called the target of std::move_only_function
. If a std::move_only_function
contains no target, it is called empty. Unlike std::function, invoking an empty std::move_only_function
results in undefined behavior.
std::move_only_function
s supports every possible combination of cv-qualifiers (not including volatile), ref-qualifiers, and noexcept-specifiers provided in its template parameter. These qualifiers and specifier (if any) are added to its operator()
.
std::move_only_function
satisfies the requirements of MoveConstructible and MoveAssignable, but does not satisfy CopyConstructible or CopyAssignable.
Contents |