estoy tratando de seguir los ejemplos de esta página:Cómo usar boost :: error_info correctamente?
http://www.boost.org/doc/libs/1_40_0/libs/exception/doc/motivation.html
En el momento en que trato la siguiente línea:
throw file_read_error() << errno_code(errno);
Me aparece un error:
error C2440: '<function-style-cast>' : cannot convert from 'int' to 'errno_code'
¿Cómo hago para que esto funcione?
Lo ideal sería que quieren crear algo como esto:
typedef boost::error_info<struct tag_HRESULTErrorInfo, HRESULT> HRESULTErrorInfo;
Pero no se puede incluso que los primeros ejemplos de trabajo.
Editar: Aquí es un breve ejemplo de lo que genera C2440 de error para mí:
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);
}
¿Podría publicar un ejemplo mínimo completo que está intentando compilar al obtener el error C2440? –
Ver el ejemplo en el enlace. No pude hacer que 'throw file_open_error() << errno_code (errno);' funcione. –
Agregó un ejemplo. –