Dan*_*nra 10 c++ lambda std-function
以下编译正常:
#include <functional>
int main()
{
std::function<const int&()> f = []() -> int {return 1;};
const int& r = f(); // r is a dangling reference
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么可以将返回类型设置为std::function具有const int&返回类型的lambda int?恕我直言,允许这种演员隐含地发生并且没有任何警告.
您可以std::function使用任何可以使用相关参数调用的对象构造一个,并且其返回值可以隐式转换为返回值std::function.int可以隐式转换为const int&,因此符合规则.
编译器可以随意警告这一点,但对于一个特别偏角的情况来说似乎需要做很多工作.
| 归档时间: |
|
| 查看次数: |
512 次 |
| 最近记录: |