ich einen benutzerdefinierten Datentyp haben, dass in der Praxis entweder float
oder double
sein kann. Auf jedem O außer OSX, ich bin in der Lage diese C++ 11-Vorlage erfolgreich bauen:Mehrdeutige Aufruf abs
#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;
}
jedoch Klirren 6,0 (3,5 LLVM) berichtet, einen mehrdeutigen Funktionsaufruf. Wenn ich abs
-fabs
ändern, wird der Fehler auf OSX gelöst, aber jetzt ein identischen Fehler zeigt mich auf meinem Linux-Klirren, gcc, und Visual Studio.
Fehler auf Visual Studio mit Fabs:
349 error C2668: 'fabs' : ambiguous call to overloaded function
UPDATE
Dieses Beispiel auf unserem O X-Systeme zusammengestellt, obwohl in dem fast identisch Projekt ist es nicht. Die Lösung enthielt <cstdlib>
explizit in der Quelle, anstatt zurück in einem anderen Header. Der Grund ist unklar, scheint aber zu sein, dass xcode/clang nicht unserem Header entspricht.
Haben Sie den eigentlichen Fehlertext haben? – Collin
@Collin Der Visual Studio-Fehler wurde hinzugefügt. Braucht eine Minute, um das Klanganaloge zu finden. – EntangledLoops
@ShafikYaghmour Der Fehler wird in dieser Zeile generiert, ohne dass Anrufe erforderlich sind. – EntangledLoops