Mehrdeutiger Aufruf von abs

Ich habe einen benutzerdefinierten Datentyp, der in der Praxis entweder @ sein kanfloat oderdouble. Mit Ausnahme von OSX kann ich auf jedem Betriebssystem diese C ++ 11-Vorlage erfolgreich erstellen:

#include <cmath>
#include <cstdlib>
#include <cstdint>

template< class REAL_T >
inline REAL_T inhouse_abs(REAL_T i_val)
{
    return std::abs((REAL_T)i_val);
}

int main()
{
    int32_t ui = 2;
    inhouse_abs(ui);
    return 0;
}

Clang 6.0 (3.5 LLVM) meldet jedoch einen mehrdeutigen Funktionsaufruf. Wenn ich @ ändeabs zufabs, der Fehler ist unter OSX behoben, aber jetzt wird auf meinem Linux-Clang, gcc und Visual Studio ein identischer Fehler angezeigt.

Fehler in Visual Studio mit Fabs:

349 error C2668: 'fabs' : ambiguous call to overloaded function

AKTUALISIERE

Dieses Beispiel wurde auf unseren OS X-Systemen kompiliert, obwohl imfasidentisches projekt gibt es nicht. Die Lösung beinhaltete<cstdlib> explizit in der Quelle und nicht in einem anderen Header. Der Grund ist unklar, scheint aber darin zu liegen, dass xcode / clang unseren Header-Includes nicht richtig folgt.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage