相关疑难解决方法(0)

353
推荐指数
18
解决办法
30万
查看次数

为什么 cmath 不使用模板和/或重载

TR1 在 C++11 中引入的许多新函数都具有丑陋的类似 C 的签名。例如,引用Boost的TR1文档(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);
Run Code Online (Sandbox Code Playgroud)

显然,人们更喜欢某种模板化实现(这实际上是 Boost 中这些函数的“本机”签名),或者至少是某种重载而不是多个标识符。

我可以理解,以 C 兼容性为目标意味着支持这些标识符,但这对于纯 C++ 使用者来说是一个麻烦。除了 之外<cmath>,还可能有一些<math>具有更自然界面的 。

我缺少什么(除了可能之前提出的一些问题)?

c++ templates overloading tr1 cmath

5
推荐指数
1
解决办法
238
查看次数

标签 统计

c++ ×2

c++11 ×1

cmath ×1

overloading ×1

templates ×1

tr1 ×1

typeof ×1

variables ×1