【发布时间】:2016-11-22 07:43:29
【问题描述】:
我已经了解了如何声明函数向量(请参阅calling a function from a vector)。
但是那回答用户指针。如何使用现代 C++ 中的新语法创建函数/lambda 向量?
使用新语法的函数示例通常使用 auto:
auto f = [] (std::string msg) -> void {
std::cout << msg << std::endl;
};
f 的实际类型是什么?那么我可以声明一个这种类型的向量吗?
非常感谢您的帮助
【问题讨论】:
-
"f 的实际类型是什么?" 无法命名。 “所以我可以声明这种类型的向量?” 是的,但这无济于事,因为 lambdas 不是默认可构造的。
std::vector<std::function<void(std::string)>>可能适合您的目的。 -
如果 lambda 没有闭包,你实际上仍然可以使用指针,顺便说一句
-
如果您不需要向量(即,如果实际的 lambda 在编译时已知),您可以创建一个 std::tuple 的 lambda。