направляющие вывода для 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) |
1) Эта перегрузка участвует в разрешении перегрузки только в том случае, если
std::is_function_v<F> является true.
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/cpp/utility/functional/function_ref/deduction_guides