下列编译良好 http://melpon.org/wandbox/permlink/aO3eLLNUYZ3ucxcx:
#include <functional>
int main()
{
std::function<const int&()> f = []() -> int {return 1;};
const int& r = f(); // r is a dangling reference
return 0;
}
怎么可以设置一个std::function
with a const int&
返回 lambda 的类型int
返回类型?恕我直言,允许这种类型的转换隐式发生并且没有任何警告是一个陷阱。
你可以构造一个std::function
任何可使用相关参数调用且其返回值可隐式转换为std::function
返回。int
可以隐式转换为const int&
,因此满足规则。
编译器可以随意警告这一点,但对于一个特别角落的情况来说,这似乎需要做很多工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)