1
5
本标准不包括
以及真实的静态分析 能够 抓住这个,但和往常一样,这是一种权衡。C++编译是足够慢的,因此编译器编写者必须权衡进一步静态分析的好处,这可能允许他们产生更好的诊断,而不是增加编译时间。 |
2
2
所以,它显然是一种可诊断的疾病。 因此,我稍微调整了函数如下,只是为了创建多个返回路径:
现在,vs没有像以前那样报告警告。 作为一个例子,乍一看,编译器应该很容易检测并捕获并非所有路径都返回值。但是编译器(例如vs)没有。
因此,我想OP中的代码可能与上面的示例具有相同的复杂度来诊断条件,尽管我不确定。唯一的好处是这个案子的标准是明确的。
回到OP中的代码,我想标准并没有规定这个条件是一个可诊断的条件,因此编译器可以自由地做他们想做的事情。基本上可以理解,返回的引用指向一个已经被销毁的对象。因此访问这样的对象将导致未定义的行为 |
Sato · 如何使gcc警告未定义的结构? 7 年前 |
Goovie · 为什么clang需要-lm而不是gcc? 7 年前 |
Peter VARGA · gcc不警告“变量已设置但未使用” 8 年前 |
Daniele E. Domenichelli · 继承自已弃用的类 9 年前 |
Ilya · 使用数组类时出现奇怪的警告 9 年前 |
tohava · 将GCC中的“删除”警告变为错误 10 年前 |