При использовании варианта double
функции std::abs()
без std
с g++ 4.6.1 никаких предупреждений и ошибок не указывается.
#include <algorithm>
#include <cmath>
double foobar(double a)
{
return abs(a);
}
Эта версия g++, по-видимому, тянет в double
вариант abs()
в глобальное пространство имен через один из включений из algorithm
. Похоже, теперь это разрешено стандартом (см. question), но не требуется.
Если я скомпилирую вышеуказанный код с помощью компилятора, который не вытаскивает вариант double
abs()
в глобальное пространство имен (например, g++ 4.2), сообщается следующее сообщение:
warning: passing 'double' for argument 1 to 'int abs(int)'
Как я могу заставить g++ 4.6.1 и другие компиляторы, которые вытягивают функции в глобальное пространство имен, дать предупреждение, чтобы я мог предотвратить ошибки при использовании с другими компиляторами?