Пожалуйста, просмотрите следующий код, связанный с лямбдой, С++ 0x:
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), что лямбда не может быть преобразована в тип WEIGHT_FUNC
. Я также знаю ответ: используя std::function object
:
typedef std::function<uint64_t (void*)> WEIGHT_FUNC;
Однако я также хочу знать, как я могу получить тип лямбды БЕЗ использования std::function
. Каким должен быть тип?