Как правильно использовать boost :: error_info?
Я пытаюсь следовать примерам на этой странице:
http://www.boost.org/doc/libs/1_40_0/libs/exception/doc/motivation.html
Минуту я пробую следующую строку:
throw file_read_error() << errno_code(errno);
Я получаю ошибку:
error C2440: '<function-style-cast>' : cannot convert from 'int' to 'errno_code'
Как мне заставить это работать ??
В идеале я хочу создать что-то вроде этого:
typedef boost::error_info<struct tag_HRESULTErrorInfo, HRESULT> HRESULTErrorInfo;
Но я даже не могу заставить первые примеры работать.
Изменить: Вот краткий пример того, что генерирует ошибку C2440 для меня:
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);
}