std:: function_ref

From cppreference.com
Utilities library
General utilities
Relational operators (deprecated in C++20)
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
Defined in header <functional>
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_ref s 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 .

Member objects

Member Definition
bound-entity an object that has an unspecified TriviallyCopyable type BoundEntityType , that satisfies copyable and is capable of storing a pointer to object value or pointer to function value
( exposition-only member object* )
thunk-ptr a pointer to function of type 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
( exposition-only member object* )

Member functions

constructs a new function_ref object
(public member function)
assigns a function_ref
(public member function)
invokes the stored thunk of a function_ref
(public member function)

Deduction guides

Notes

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

Example

See also

(C++11)
copyable wrapper of any copy constructible callable object
(class template)
copyable wrapper of any copy constructible callable object that supports qualifiers in a given call signature
(class template)
move-only wrapper of any callable object that supports qualifiers in a given call signature
(class template)
value construction tag
(tag)