これは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はあらゆる種類のエラーを生成します。