C++ 11通过引用定义函数类型捕获

lin*_*ize 5 c++ c++11

如何将以下功能转换为typedef?

auto fn = [&] (int x) { doSomething(x, 3); }
Run Code Online (Sandbox Code Playgroud)

mav*_*vam 7

您可以使用decltype以获取确切的类型:

  auto fn = [&] (int x) { doSomething(x, 3); };
  using lambda_type = decltype(fn);
Run Code Online (Sandbox Code Playgroud)

但是如果你只是想知道一个兼容的,更通用的类型,比如将lambda作为参数传递给另一个函数,你可以使用std::function<void(int)>(如Joachim所提到的).


Som*_*ude 3

怎么样

using my_function_type = std::function<void(int)>;
Run Code Online (Sandbox Code Playgroud)