g++ -Wuninitialized 在 std::min() 处不显示警告

Tc1*_*c14 6 c++ g++ gcc-warning

我用g++ -Wuninitialized(g++ Version 7.5.0)编译了以下代码,但没有收到任何警告:

#include <algorithm>

int main() {

    int a, b;

    b = std::min(a, 0);

}
Run Code Online (Sandbox Code Playgroud)

如您所见,std::min()使用参数aand调用0,但此时a未初始化。这应该给你一个警告,但它没有。

如果std::min()用自定义函数替换,编译器会给你一个警告:

代码

int f(int x) {
  
    return 2 * x;

}

int main() {

    int a, b;

    b = f(a);

}
Run Code Online (Sandbox Code Playgroud)

警告

<source>: In function 'int main()':
<source>:11:10: warning: 'a' is used uninitialized in this function [-Wuninitialized]
   11 |     b = f(a);
      |         ~^~~
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用std::min()?我也试过std::max(),它也没有给我警告。但是std::hypot()我得到了一个。有没有办法让它也适用std::min()