Namespaces
Variants

std::function_ref の推論ガイド std::function_ref

cpprefjp 日本語版
 
 
ユーティリティライブラリ
言語サポート
型サポート (基本型、RTTI)
ライブラリ機能テストマクロ (C++20)
プログラムユーティリティ
可変長引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三者比較
(C++20)
(C++20) (C++20) (C++20)     
(C++20) (C++20) (C++20)

一般ユーティリティ
関係演算子 (C++20で非推奨)
 
関数オブジェクト
関数呼び出し
(C++17) (C++23)
恒等関数オブジェクト
(C++20)
旧式のバインダとアダプタ
(C++17まで* )
(C++17まで* )
(C++17まで* )
(C++17まで* )   
(C++17まで* )
(C++17まで* ) (C++17まで* ) (C++17まで* ) (C++17まで* )
(C++20まで* )
(C++20まで* )
(C++17まで* ) (C++17まで* )
(C++17まで* ) (C++17まで* )

(C++17まで* )
(C++17まで* ) (C++17まで* ) (C++17まで* ) (C++17まで* )
(C++20まで* )
(C++20まで* )
 
 
ヘッダ <functional>
template< class F >
function_ref( F* ) -> function_ref<F>;
で定義 (1)
template< auto f >
function_ref( std::nontype_t<f> ) -> function_ref</*see below*/>;
(C++26以上) (2)
template< auto f, class T >
function_ref( std::nontype_t<f>, T&& ) -> function_ref</*see below*/>;
(C++26以上) (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) に対する G の形式(cv修飾、noexcept、左辺値参照修飾は任意)である、または
  • 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)> です。

例