deduction guides for 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)
Transparent operator wrappers
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

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++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 F >
function_ref( F* ) -> function_ref<F>;
(1) (since C++26)
template< auto f >
function_ref( std::nontype_t<f> ) -> function_ref</*see below*/>;
(2) (since C++26)
template< auto f, class T >
function_ref( std::nontype_t<f>, T&& ) -> function_ref</*see below*/>;
(3) (since C++26)
1) This overload participates in overload resolution only if std::is_function_v<F> is true.
2) Let type F be std::remove_pointer_t<decltype(f)>. This overload participates in overload resolution only if std::is_function_v<F> is true. The deduced type is std::function_ref<F>.
3) Let type F be decltype(f). This overload participates in overload resolution only if :
  • F is of the form R(G::*)(A...) noexcept(E) (optionally cv-qualified, optionally noexcept, optionally lvalue reference qualified) for a type G, or
  • F is of the form M G::* for a type G and an object type M, in which case let R be std::invoke_result_t<F, T&>, A... be an empty pack, and E be false, or
  • F is of the form R(*)(G, A...) noexcept(E) for a type G.
The deduced type is std::function_ref<R(A...) noexcept(E)>.

Example