为什么我可以将`std :: string`右值存储到`const std :: string&`中

时间:2019-08-22 15:54:18

标签: c++

我不明白至少在没有警告的情况下该代码如何编译:

#include <string>
#include <iostream>

int main()
{
    const std::string a = "/42";
    const std::string &b = a.substr(1);

    std::cout << "A without slash is " << b << std::endl;
}

因为a.substr(1)返回一个新的std::string,所以b引用了一个临时的左值,因此是一个悬空的引用。为什么行得通?

0 个答案:

没有答案