std::copyable_function(3)
π NAME π
std::copyable_function - std::copyable_function
okay so bestie, this is the std::copyable_function(3) page from the C++ Standard Libary β yes, thatβs how the manual spells it, and weβre keeping the lore π
.
β¨ Synopsis β¨
Defined in header <functional>
template< class... > (1) (since C++26)
class copyable_function; // not defined
template< class R, class... Args >
class copyable_function<R(Args...)>;
template< class R, class... Args >
class copyable_function<R(Args...) noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) &>;
template< class R, class... Args >
class copyable_function<R(Args...) & noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) &&>;
template< class R, class... Args >
class copyable_function<R(Args...) && noexcept>; (2) (since C++26)
template< class R, class... Args >
class copyable_function<R(Args...) const>;
template< class R, class... Args >
class copyable_function<R(Args...) const noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const &>;
template< class R, class... Args >
class copyable_function<R(Args...) const & noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const &&>;
template< class R, class... Args >
class copyable_function<R(Args...) const && noexcept>;
okay so what even is it? The class template std::copyable_function is a general-purpose polymorphic function wrapper β and no cap, itβs giving main character energy for callables. std::copyable_function objects can store and invoke any CopyConstructible 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::copyable_function. If a std::copyable_function contains no target, it is called empty. And this part is dramatic, bestie: unlike std::function, invoking an empty std::copyable_function results in undefined behavior. π That is a βwe donβt do that hereβ situation, fr fr.
std::copyable_functions supports every possible combination of cv-qualifiers, ref-qualifiers, and noexcept-specifiers not including volatile provided in its template parameter. These qualifiers and specifier (if any) are added to its operator(). β¨
std::copyable_function satisfies the requirements of CopyConstructible and CopyAssignable. π
π Member types π
result_typeβR
π Member functions π
constructor(C++26) β constructs a newstd::copyable_functionobject (public member function)destructor(C++26) β destroys astd::copyable_functionobject (public member function)operator=(C++26) β replaces or destroys the target (public member function)swap(C++26) β swaps the targets of twostd::copyable_functionobjects (public member function)operator bool(C++26) β checks if thestd::copyable_functionhas a target (public member function)operator()(C++26) β invokes the target (public member function)
π«Ά Non-member functions π«Ά
swap(std::copyable_function)(C++26) β overloads thestd::swapalgorithm (function)operator==(C++26) β compares astd::copyable_functionwithnullptr(function)
π Notes π
Implementations may store a callable object of small size within the std::copyable_function object. Such small object optimization is effectively required for function pointers and std::reference_wrapper specializations, and can only be applied to types T for which std::is_nothrow_move_constructible_v<T> is true. π§
Feature-test macro Value Std Feature
__cpp_lib_copyable_function 202306L (C++26) std::copyable_function
πΈ Example πΈ
This section is incomplete Reason: example
the incomplete iconique energy is real π
π See also π
function(C++11) β wraps callable object of any copy constructible type with specified function call signature (class template)move_only_function(C++23) β wraps callable object of any type with specified function call signature (class template)
π·οΈ Category π·οΈ
- Todo with reason
okay thatβs the whole page, bestie π signed off with love from http://cppreference.com, dated 2024.06.10 β mwah π«Άπ
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms