std::function_ref - cppreference.com (original) (raw)

Defined in header
template< class... > class function_ref; // not defined (1) (since C++26)
template< class R, class... Args > class function_ref<R(Args...)>; template< class R, class... Args > class function_ref<R(Args...) noexcept>; template< class R, class... Args > class function_ref<R(Args...) const>; template< class R, class... Args > class function_ref<R(Args...) const noexcept>; (2) (since C++26)

Class template std::function_ref is a non-owning function wrapper. std::function_ref objects can store and invoke reference to Callable target - functions, lambda expressions, bind expressions, or other function objects, but not pointers to member functions and pointers to member objects. std::nontype can be used to construct std::function_ref by passing function pointers, pointers to member functions, and pointers to member objects.

std::function_refs supports every possible combination of cv-qualifiers (excluding volatile), and noexcept-specifiers provided in its template parameter.

Every specialization of std::function_ref is a TriviallyCopyable type that satisfies copyable.

Contents

[edit] Member types

Member Definition
BoundEntityType (private) unspecified TriviallyCopyable type that satisfies copyable and is capable of storing a pointer to object value or pointer to function value(exposition-only member type*)
FunctionPointerType (private) R(*)(BoundEntityType , Args&&...) noexcept(noex ) where noex is true if noexcept is present in function signature as part of the template parameter of std::function_ref, false otherwise(exposition-only member type*)

[edit] Data members

Member Definition
BoundEntityType bound-entity a bound entity object(exposition-only member object*)
FunctionPointerType thunk-ptr a stored pointer to function(exposition-only member object*)

[edit] Member functions

[edit] Deduction guides

[edit] Notes

Feature-test macro Value Std Feature
__cpp_lib_function_ref 202306L (C++26) std::function_ref

[edit] Example

[edit] See also

| | copyable wrapper of any copy constructible callable object (class template) [edit] | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | copyable wrapper of any copy constructible callable object that supports qualifiers in a given call signature (class template) [edit] | | | move-only wrapper of any callable object that supports qualifiers in a given call signature (class template) [edit] | | | value construction tag (tag)[edit] |