相关疑难解决方法(0)

C++ 0x lambda,我怎么能作为参数传递?

请查看以下C++ 0x lambda相关代码:

typedef uint64_t (*WEIGHT_FUNC)(void* param);
typedef std::map<std::string, WEIGHT_FUNC> CallbackTable;

CallbackTable table;
table["rand_weight"] = [](void* param) -> uint64_t
{
  return (rand() % 100 + 1);
};
Run Code Online (Sandbox Code Playgroud)

我得到一个错误(在Visual Studio 2010中),lambda无法转换为类型WEIGHT_FUNC.我也知道答案:使用std::function object:

typedef std::function<uint64_t (void*)>  WEIGHT_FUNC;
Run Code Online (Sandbox Code Playgroud)

但是,我也想知道如何在不使用的情况下接收lambda的类型std::function.它应该是什么类型的?

c++ lambda c++11

17
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×1

c++11 ×1

lambda ×1