std::function_ref の推論ガイド
From cppreference.com
< C++ | Utility | Functional | 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</*以下参照*/>; |
(2) | (C++26以降) |
| template< auto f, class T > function_ref( std::nontype_t<f>, T&& ) -> function_ref</*以下参照*/>; |
(3) | (C++26以降) |
型 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)> です。
[編集] 例
| このセクションは未完成です 理由: 例がありません |