std::function
的推导指引
来自cppreference.com
< cpp | utility | functional | function
定义于头文件 <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 起) |
2) 若对于某类类型 G , decltype(&F::operator()) 拥有形式 R(G::*)(A...) (可选地有 cv 限定,可选地有 noexcept , 可选地有左值引用限定),则推导类型为 std::function<R(A...)> 。 此重载仅若 &F::operator() 在作为不求值运算数时为良式才参与重载决议。
注意
这些推导指引所推导的类型可能在之后的标准版本中更改(特别是若在之后的版本中添加 noexcept 支持到 std::function 则这可能发生)。
示例
运行此代码
#include <functional> int func(double) { return 0; } int main() { std::function f{func}; // 指引 #1 推导 function<int(double)> int i = 5; std::function g = [&](double) { return i; }; // 指引 #2 推导 function<int(double)> }