名前空間
変種
操作

std::function に対する推定ガイド

提供: cppreference.com
< cpp‎ | utility‎ | functional‎ | function
 
 
 
関数オブジェクト
関数ラッパー
(C++11)
(C++11)
関数の部分適用
(C++20)
(C++11)
関数呼び出し
(C++17)
恒等関数オブジェクト
(C++20)
参照ラッパー
(C++11)(C++11)
演算子ラッパー
否定子
(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 R, class... ArgTypes>
function(R(*)(ArgTypes...)) -> function<R(ArgTypes...)>;
(1) (C++17以上)
template<class F>
function(F) -> function</*see below*/>;
(2) (C++17以上)
1) 関数からの推定を可能とするため、この推定ガイドstd::function に対して提供されます。
2) decltype(&F::operator()) が何らかのクラス型 G に対して R(G::*)(A...) の形 (およびその cv 修飾された型、およびその noexcept 指定された型、およびその左辺値参照) の場合、推定される型は std::function<R(A...)> です。 このオーバーロードは、&F::operator() が未評価のオペランドとして扱われるときに well-formed である場合にのみ、オーバーロード解決に参加します。

[編集] ノート

これらの推定ガイドによって推定される型は将来の標準の改訂で変更される可能性があります (特に、将来の標準で std::functionnoexcept のサポートが追加された場合、これが起きるかもしれません)。

[編集]

#include <functional>
int func(double) { return 0; }
int main() {
  std::function f{func}; // guide #1 deduces function<int(double)>
  int i = 5;
  std::function g = [&](double) { return i; }; // guide #2 deduces function<int(double)>
}