前段时间我用std::function
的差不多是这样的:
std::function<void(int)> func = [](int i) -> int { return i; };
基本上,我这样做是因为我想在 a 中存储不同的函数对象std::function
,但我不想限制这些函数的返回类型。由于这似乎有效,我就同意了。但我不相信它可以安全使用,我也找不到任何关于它的文档。有谁知道这种用法是否合法?或者更一般地说,可以安全地分配给 a 的对象的规则是什么std::function
?
编辑
为了澄清起见,我关心的问题是 lambda 函数返回 an int
,而func
声明为 return type void
。我不确定这是否可以,尤其是在拨打电话后func()
。