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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage