这是 c++ 中未定义的行为吗?
#include <iostream>
const double& abs(const double& x){
return x>0 ? x:-x;
}
int main () {
double x = -10.0;
double y = abs(x);
std::cout << y << std::endl;
return 0;
}
g++
不喜欢:
mem.cpp: In function ‘const double& abs(const double&)’:
mem.cpp:4: warning: returning reference to temporary
valgrind 会产生各种错误。