Я портировал некоторый код из windows (vs2010) в gcc
фрагмент выглядит так:
double r1 /* = some value */;
double r2 /* = some value */;
double diff = abs(r1-r2);
std::cerr<< r1 << ", " << r2 << ", " << diff<< std::endl;
он компилируется в gcc (arm-linux-gnueabihf-g ++ (Raspbian)6.3.0-18 + rpi1 + deb9u1) 6.3.0 20170516) с -Wall -Wextra
без предупреждений.
Результат:
0.121, 0.0709839, 0
0.015, 0.131958, 0
0.015, 0.00799561, 0
0.21, 0.00799561, 0
0.182, 0.205994, 0
0.015, 0.00799561, 0
В окнах результат верный.У функций abs
есть двойные перегрузки.
Я не using namespace std;
.Кажется, что при gcc эти перегрузки не существуют в глобальном пространстве имен.
Я не знаю, что именно говорит стандарт, но я бы ожидал, по крайней мере, предупреждение о двойном> int-преобразовании при прохожденииразница с функцией abs
.
У меня что-то пропущено?Почему я не получаю это предупреждение?