gpt4 book ai didi

c++ - 引用临时和警告

转载 作者:行者123 更新时间:2023-11-28 00:57:31 25 4
gpt4 key购买 nike

我花了一个小时才在我的代码中找到这个问题:

vector<string> & input_variables = parse_xml(xml_path)["variables"];

哪里parse_xml是一个返回 std::map<std::string, std::vector<std::string> > 的函数.为什么 gcc 不警告我(使用 -Wall)?我是否遗漏了一些标志?

最佳答案

你引用了一个被销毁的对象。在 C++11 中,编写了新的语言功能,使此代码非法。如果要使用数据,则必须复制或将数据交换到局部变量中。 GCC 不会警告您,因为 C++03 没有提供必要的功能来防止这种情况发生。

从技术上讲,operator[] 的返回值是一个左值。不幸的是,它即将被它的所有者 std::map 销毁。

关于c++ - 引用临时和警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10284482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com