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

时间:2013-08-31 14:41:54

标签: c++ c++11

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

auto fn = [&] (int x) { doSomething(x, 3); }

3 个答案:

答案 0 :(得分:7)

您可以使用decltype获取完全类型:

  auto fn = [&] (int x) { doSomething(x, 3); };
  using lambda_type = decltype(fn);

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

答案 1 :(得分:3)

怎么样

using my_function_type = std::function<void(int)>;

答案 2 :(得分:1)

typedef std::function<void(int)> my_function_type;

适用于VS2012