error_info
Requirements:
T должен иметь доступный конструктор копий и не должен быть эталоном (нет требования, чтобы конструктор копий T не бросал)
Description:
Этот шаблон класса используется для ассоциирования типа тега с типом значения T. Объекты типа error_info может быть передано оператору<< для хранения в объектах типа boost:: исключение.
Usage:
Заголовок <boost/ Exception/error_info.hpp> предоставляет декларацию шаблона error_info, которая достаточна для целей типизации экземпляра для конкретных тегов и T, например:
#include <boost/exception/error_info.hpp>
struct tag_errno;
typedef boost::error_info<tag_errno,int> errno_info;
Или более короткий эквивалент:
#include <boost/exception/error_info.hpp>
typedef boost::error_info<struct tag_errno,int> errno_info;
Этот файл errno_info typedef может быть передан оператору << (#include <boost/ Exception/info.hpp>first) для хранения int, названного tag_errno, в исключениях типов, которые происходят от boost:: Исключение:
throw file_read_error() << errno_info(errno);
Он также может быть передан get_error_info (#include <boost/ Exception/get_error_info.hpp>first) для извлечения тега_errno int из бустера:: Exception:
catch( boost::exception & x )
{
if( int const * e=boost::get_error_info<errno_info>(x) )
....
}
Для удобства и однородности Boost Exception определяет следующее обычно используемое значение error_info typedefs, готовые к использованию с оператором<<: