Comment utiliser boost::error_info correctement?

Je suis en train de suivre les exemples sur cette page:

http://www.boost.org/doc/libs/1_40_0/libs/exception/doc/motivation.html

La minute, j'ai essayer la ligne suivante:

throw file_read_error() << errno_code(errno);

J'obtiens une erreur:

error C2440: '<function-style-cast>' : cannot convert from 'int' to 'errno_code'

Comment puis-je obtenir que cela fonctionne??

Idéalement je veux créer quelque chose comme ceci:

typedef boost::error_info<struct tag_HRESULTErrorInfo, HRESULT> HRESULTErrorInfo;

Mais je ne peux même pas obtenir les premiers exemples de travailler.

Edit: Voici un bref exemple de ce que génère l'erreur C2440 pour moi:

struct exception_base: virtual std::exception, virtual boost::exception { };
struct io_error: virtual exception_base { };
struct file_read_error: virtual io_error { };

typedef boost::error_info<struct tag_errno_code,int> errno_code;

void foo()
{
    //error C2440: '<function-style-cast>' : cannot convert from 'int' to 'errno_code'
    throw file_read_error() << errno_code(errno);
}
  • Pourriez-vous poster une complète minimale de l'exemple que vous essayez de compiler lors de l'obtention de la C2440 erreur?
  • Afficher l'exemple sur le lien. Je ne pouvais pas obtenir throw file_open_error() << errno_code(errno); de travail.
  • Ajout d'un exemple.
  • Pour ceux qui rencontrent ce: la "motivation" de la page dans l'élan Exception docs est incomplet -- un meilleur exemple est ici: boost.org/doc/libs/1_56_0/libs/exception/doc/..., où ils énumèrent les corriger en-têtes.
InformationsquelleAutor Mark Ingram | 2010-09-23