繁体   English   中英

std :: abs的模板版本

[英]Template version of std::abs

这里列出了C ++中std::abs的当前重载。 我想知道为什么不定义以下模板并放弃所有丑陋的C风格重载?

template <typename T> inline
T abs(const T& v) { return v < 0 ? -v : v; }

LWG第2192期 目前,如果xy是无符号的,则std::abs(xy) < 2失败。 这会捕获一个微妙的编程错误。 通过提议的更改,它可以编译但完全错误。 abs(3u-4u)会比2大得多,实际上它是UINT_MAX

这会遇到匹配一切的常见问题。

abs有意义的类型示例,但此实现不complex<double>

因为类型'T'可以访问任何数据类型,包括char。 那么如果有人将char传递给abs函数,你有什么期望? :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM