clang ++ bug还是我不明白的东西?

Geo*_*tis 0 c++ clang

我用g ++编译了以下代码并且它有效.

bool keyExists(Obj key){
    findIn(key,true,false,false,nullptr,nullptr,1,0,0);
}
Run Code Online (Sandbox Code Playgroud)

我使用clang ++编译它,当程序运行时它冻结了.

我把线改为:

bool keyExists(Obj key){
    return findIn(key,true,false,false,nullptr,nullptr,1,0,0);
    //findIn(key,true,false,false,nullptr,nullptr,1,0,0);
}
Run Code Online (Sandbox Code Playgroud)

现在它的工作原理.

我想它不应该那样工作.这是Clang的已知错误还是一个特例?

SLa*_*aks 5

您的代码在没有return任何内容的情况下到达函数的末尾.

这是未定义的行为,因此编译器完全正确.

  • 附录:顺便说一下,编译器至少没有警告你作为QOI问题吗? (2认同)