Namespaces
Variants

deduction guides for std::function_ref

From cppreference.net
Utilities library
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* )
Определено в заголовочном файле <functional>
template < class F >
function_ref ( F * ) - > function_ref < F > ;
(1) (начиная с C++26)
template < auto f >
function_ref ( std:: nontype_t < f > ) - > function_ref < /*см. ниже*/ > ;
(2) (начиная с C++26)
template < auto f, class T >
function_ref ( std:: nontype_t < f > , T && ) - > function_ref < /*см. ниже*/ > ;
(3) (начиная с C++26)
1) Эта перегрузка участвует в разрешении перегрузки только если std:: is_function_v < F > равно true .
2) Пусть тип F будет std:: remove_pointer_t < decltype ( f ) > . Эта перегрузка участвует в разрешении перегрузки только если std:: is_function_v < F > равно true . Выводимый тип - это std:: function_ref < F > .
3) Пусть тип F будет decltype ( f ) . Эта перегрузка участвует в разрешении перегрузки только если:
  • F имеет форму R ( G :: * ) ( A... ) noexcept ( E ) (опционально cv-квалифицированный, опционально noexcept, опционально lvalue reference квалифицированный) для типа G , или
  • F имеет форму M G :: * для типа G и объектного типа M , в этом случае пусть R будет std:: invoke_result_t < F, T & > , A... будет пустым пакетом, и E будет false, или
  • F имеет форму R ( * ) ( G, A... ) noexcept ( E ) для типа G .
Выведенный тип - std:: function_ref < R ( A... ) noexcept ( E ) > .

Пример