请看下面的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);
};
我在Visual Studio 2010中遇到了一个错误,错误提示lambda无法转换为WEIGHT_FUNC
类型。我知道解决办法:使用std::function对象
:
typedef std::function<uint64_t (void*)> WEIGHT_FUNC;
不过,我也想知道如何在不使用std::function
的情况下接收lambda的类型。应该使用什么类型?