鉴于以下计划:
#include <cmath>
int main()
{
std::abs(0u) ;
}
Run Code Online (Sandbox Code Playgroud)
gcc并且clang不同意这是否是不正确的.使用gcc与libstdc++代码建立无错误或警告(见直播),同时采用clang与libc++它生成以下错误(见直播):
error: call to 'abs' is ambiguous
std::abs(0u) ;
^~~~~~~~
Run Code Online (Sandbox Code Playgroud)
哪个结果是正确的?应该abs(0u)是暧昧与否?
MSalters指出了一个有趣的相关问题:std :: abs的模板版本.