Many of the new functions brought in C++11 by TR1 have ugly C-like signatures. For instance, quoting Boost's TR1's documentation (http://www.boost.org/doc/libs/1_52_0/doc/html/boost_tr1/subject_list.html#boost_tr1.subject_list.special):
// [5.2.1.1] associated Laguerre polynomials:
double assoc_laguerre(unsigned n, unsigned m, double x);
float assoc_laguerref(unsigned n, unsigned m, float x);
long double assoc_laguerrel(unsigned n, unsigned m, long double x);
Obviously one would have preferred some templated implementation (which is actually the "native" signature of these functions in Boost), or at least some overloading instead of several identifiers.
I can understand that aiming at C compatibility means supporting these identifiers, but then this a nuisance for pure C++ speakers. In addition to <cmath>
, there could be some <math>
, with more natural interfaces.
What is it that I am missing (besides, possibly, some previously asked questions)?