以下代码会导致悬空指针错误。
std::vector<std::pair<std::string, int>> c;
for (auto& b : c) {
const auto& [s, i] = b;
std::string_view v = s.substr(i);
std::cout << v;
}
我认为b
保存了对std::pair<std::string, int>
的引用,所以s
应该是pair对象中字符串的引用。为什么会出现悬空指针错误?我在这里错过了什么吗?godbolt链接:https://godbolt.org/z/4zMvbr