名前空間
変種
操作

std::function_ref の推論ガイド

From cppreference.com
 
 
ユーティリティライブラリ
言語サポート
型のサポート (基本型、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++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

古いバインダとアダプタ
(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) (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 の場合にのみ、オーバーロード解決に参加します。
Fstd::remove_pointer_t<decltype(f)> とします。このオーバーロードは、std::is_function_v<F>true の場合にのみ、オーバーロード解決に参加します。推論される型は std::function_ref<F> です。
Fdecltype(f) とします。このオーバーロードは、以下の場合にのみオーバーロード解決に参加します。
  • FR(G::*)(A...) noexcept(E) の形式である場合(オプションで cv 修飾、noexcept 修飾、lvalue 参照修飾されており、G は型)、または
  • FM G::* の形式である場合(G は型、M はオブジェクト型)。この場合、Rstd::invoke_result_t<F, T&>A... を空のパック、E を false とします。
  • FR(*)(G, A...) noexcept(E) の形式である場合(G は型)。
推論される型は std::function_ref<R(A...) noexcept(E)> です。

[編集]

English 日本語 中文(简体) 中文(繁體)