What is the namespace for math functions? Global or std?
Consider cos function. It has 3 overloads. But there is also legacy cos from math.h. C doesn’t know anything about function overloading. Therefore cos(x) can’t be resolved to cos(float). The solution is to call the single precision version explicitly cosf(x). Did I miss anything?
You get the same functions by including
<math.c>and<cmath>in C++, the only differences is the namespace. I.E. including<math.h>also gives you the overload.In theory, in C++03, using
<math.h>gives you the symbols defined in the global namespace and also in the std namespace while using<cmath>gives you the symbols defined in the std namespace and not in the global namespace.The practice is different and C++ 0X aligned the theory with the practice.
<math.h>gives you the symbols defined in the global namespace and perhaps also in the std namespace while using<cmath>gives you the symbols defined in the std namespace and perhaps also in the global namespace.