【发布时间】:2013-09-05 11:17:23
【问题描述】:
为什么下面的代码中有一个悬空引用?我认为对 const 的引用总是会将临时对象的寿命延长到它们的范围内。
boost::filesystem::recursive_directory_iterator it(dir_name);
const std::string& extension = it->path().extension().string();
std::cout << extension << std::endl; // error, dangling reference
【问题讨论】:
-
"[...]对 const 的引用总是将临时对象的生命周期延长到它们的范围内"。他们为什么要这样做?
-
什么告诉你它是一个悬空引用??
-
@JBL:因为语言标准是这样说的。只要初始化器实际上是一个临时的。
-
@MikeSeymour 哦,谢谢!你能指出部分吗? (我找不到它与哪个相关)。
标签: c++ reference boost-filesystem