C++ 2011 标准库的 nextafter 和 nexttoward 函数有什么区别?
由于这些函数源自 C,因此它们不能重载,这意味着功能相同但具有不同参数(类型)的函数有两个不同的名称。以下是原始签名:
float nextafter(float, float);
float nexttoward(float, long double);
现在标准只是说应该有一些超载 http://en.cppreference.com/w/cpp/numeric/math/nextafter让 C++ 中的事情变得更好(§26.8 [c.math] p11
):
此外,还应有足够的额外过载,以确保:
- 如果任何参数对应于
double
参数有类型long double,
那么所有参数对应于double
参数被有效地转换为long double
.
- 否则,如果任何参数对应于
double
参数有类型double
或整数类型,则所有参数对应double
参数被有效地转换为double
.
- 否则,对应于的所有参数
double
参数被有效地转换为float
.
另请参见:ISO C 7.5、7.10.2、7.10.6。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)