Руководства по выводу для std::function_ref
Определено в заголовке <functional> | ||
|---|---|---|
template< class F > function_ref( F* ) -> function_ref<F>; | (1) | (с C++26) |
template< auto f > function_ref( std::nontype_t<f> ) -> function_ref</*see below*/>; | (2) | (с C++26) |
template< auto f, class T > function_ref( std::nontype_t<f>, T&& ) -> function_ref</*see below*/>; | (3) | (с C++26) |
2) Пусть тип
3) Пусть тип F будет std::remove_pointer_t<decltype(f)>. Этот перегруз участвует в резолюции перегрузки только если std::is_function_v<F> является true. Выведенный тип — std::function_ref<F>.F будет decltype(f). Этот перегруз участвует в резолюции перегрузки только если: -
Fимеет видR(G::*)(A...) noexcept(E)(при необходимости с квалификатором cv, noexcept, или квалификатором lvalue ссылки) для типа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)>. Пример
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/functional/function_ref/deduction_guides