2017-01-17 1 views
2

Ich habe eine Methode, die ein std::error_code zurückgibt. Ich bin nicht besonders an der Fehlermeldung interessiert, nur daran, ob die Methode erfolgreich war oder nicht.Wie kann ich testen, dass ein std :: error_code kein Fehler ist?

Was ist der beste Weg, um zu testen, dass ein std::error_code eine erfolgreiche Operation darstellt?

+4

Haben Sie versucht, std :: error_code :: operator bool()? http://en.cppreference.com/w/cpp/error/error_code/operator_bool – roalz

+0

Ist 'true' Succcess oder Fehler anzeigen? – sdgfsdh

+0

"False zurückgeben wenn Wert() == 0, sonst wahr." Ab was ein Wert == 0 bedeutet: "std :: error_code ist ein plattformabhängiger Fehlercode" – roalz

Antwort

1

ich auf die ähnlichen Situation kam, als mit der ASIO-Bibliothek arbeiten. Wie was one of their blog posts schon sagt, ist std::error_code gemeint getestet werden, wie folgt:

std::error_code ec; 
// ...  
if (!ec) 
{ 
    // Success. 
} 
else 
{ 
    // Failure. 
} 

Nachdem grub ein wenig tiefer, ich this (viel jüngeren) Diskussion in der C++ Standard-Google-Gruppe gefunden, die über die Aussage bestätigt, sondern auch wirft Fragen auf, ob das aktuelle Design von std::error_code einfach genug ist.

Lange Rede kurzer Sinn, wenn Sie einfach Fehler sagen müssen von Erfolg, !static_cast<bool>(errorCode) ist das, was Sie brauchen.

Verwandte Themen