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