Ist std :: abs (0u) schlecht geformt?
Gab das folgende Programm:
#include <cmath>
int main()
{
std::abs(0u) ;
}
gcc
undclang
nicht einig, ob dies schlecht geformt ist. @ Verwendgcc
mitlibstdc++
Der Code wird ohne Fehler oder Warnung erstellt sehe es live), während dem Benutzenclang
mitlibc++
es erzeugt den folgenden Fehler sehe es live):
error: call to 'abs' is ambiguous
std::abs(0u) ;
^~~~~~~~
Welches Ergebnis ist richtig? Sollteabs(0u)
mehrdeutig sein oder nicht?
MSalters weist auf eine interessante verwandte Frage hin:Vorlagenversion von std :: abs.