All overloads of ::abs and std::abs must be present in both <cmath> and <cstdlib>. This is problematic to implement because C defines fabs in math.h and labs in stdlib.h. This introduces a circular dependency between the two headers.
This patch implements that requirement by moving abs into math.h and making stdlib.h include math.h. In order to get the underlying C declarations from the "real" stdlib.h inside our math.h we need some trickery. Specifically we need to make stdlib.h include next itself.
Suggestions for a cleaner implementation are welcome.
Should this be #include_next <math.h> here ? this changes causes failures when an app defines a math.h in its own sources and adds -I path to that location, any source code then having include <stdlib.h> ends up including apps math.h via system provided stdlib.h you can see this happening with gnu groff utility