When using the double
variant of the std::abs()
function without the std
with g++ 4.6.1, no warning or error is given.
#include <algorithm>
#include <cmath>
double foobar(double a)
{
return abs(a);
}
This version of g++ seems to be pulling in the double
variant of abs()
into the global namespace through one of the includes from algorithm
. This looks like it is now allowed by the standard (see this question), but not required.
If I compile the above code using a compiler that does not pull the double
variant of abs()
into the global namespace (such as g++ 4.2), then the following error is reported:
warning: passing 'double' for argument 1 to 'int abs(int)'
How can I force g++ 4.6.1, and other compilers that pull functions into the global namespace, to give a warning so that I can prevent errors when used with other compilers?
See Question&Answers more detail:os