【发布时间】:2015-10-02 23:45:00
【问题描述】:
考虑一下:
std::string foo();
void bar() {
const std::string& r1 = foo();
static const std::string& r2 = foo();
}
我知道第一次调用foo() 产生的字符串的生命周期将延长到r1 的生命周期。
但是,临时绑定到r2 呢?它会一直存在到范围结束,还是在重新输入bar() 时仍然存在?
注意:我对特定编译器是否这样做不感兴趣。 (我对我们使用的那个很感兴趣,我可以用它轻松测试。)我想知道标准对此有何规定。
【问题讨论】:
-
独立于答案,这似乎是一种糟糕的编码风格,所以对于良好的编码风格,这个问题永远不会出现。
-
@SergeRogatch 你应该说用什么来代替。
-
@Melebius:只有在明确了实际目标时才能这样做。
-
这对于自己测试来说完全是微不足道的......