Je suis still en passant par std :: error_code et j'essaie maintenant de rendre ma liste d'enum d'erreurs équivalente à std :: error_code. Je suis ce qui est tutoriel this mais pour une raison que je ne peux pas le faire fonctionner, je finis toujours avec l'erreur No viable conversion from 'my_project::my_error' to 'std::error_code'
.Essayer de rendre mon enum équivalent à std :: error_code
C'est ce que je travaille avec:
#include <system_error>
#include <string>
namespace std {
enum class my_error;
template <>
struct is_error_condition_enum<my_error> : public true_type {};
}
namespace my_project {
enum class my_error {
warning = 45836431
};
namespace internal {
struct my_error_category : public std::error_category {
const char* name() const noexcept override {
return "AAA";
}
std::string message(int ev) const noexcept override {
const std::string message = "BBB";
return message;
}
};
}
}
inline std::error_code make_error_code(const my_project::my_error &e) {
return {static_cast<int>(e), my_project::internal::my_error_category()};
};
int main()
{
std::error_code ec = my_project::my_error::warning;
}
Vous avez écrit 'make_error_code()' mais vous ne l'utilisez pas. – Frank
Aussi, je pense que la façon dont vous étendez l'espace de noms std provoque un comportement indéfini: https://stackoverflow.com/questions/41062294/c-when-is-it-ok-to-extend-the-std-namespace, http: //fr.cppreference.com/w/cpp/language/extending_std – KjMag
@Frank Selon le tutoriel, je ne devrais pas en avoir besoin? Peut-être que je le mal interprète. – ruipacheco