Say Я использую using namespace std
(неоспоримо bad practice) и что я использую функцию abs
в моем коде (чтобы получить the overloaded absolute function). Конкретно мой MWE является:Abs и используя патезрасе
#include <cmath>
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char* argv[]) {
double f(-0.4);
std::cout<<"abs(f) = "<<abs(f)<<std::endl;
}
Если я закомментируйте using namespace std;
линию, то выход
abs(f) = 0
еще выход
abs(f) = 0.4
То, что я не понимаю, как «правильная» абс функция вызывается в последнем случае, учитывая, что даже stdlib.h имеет функцию abs
, которая возвращает только int
.
Фактически, второй ответ this question говорит, что использование using namespace std;
может не достаточно. Это правда? Моя MWE, похоже, противоречит этому.
Я нахожусь в Linux и использую gcc-4.8, что, возможно, является наиболее проблематичной комбинацией для решения зависимостей.
Невозможно воспроизвести. Работает для меня, с gcc 6.2.1 –
Ваша программа отлично работает и для меня. Это должна быть проблема с компилятором. – Yousaf
Обновлено для включения версии компилятора gcc-4.8. – MaviPranav