[英]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期 。 目前,如果x
和y
是无符号的,则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.