![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Default ConverterBoost , Chapter 1. Boost.Convert 2.0 , Chapter 1. Boost.Convert 2.0
|
![]() | Important |
---|---|
По умолчанию не установлен преобразователь по умолчанию. |
Следовательно, без дополнительных шагов конфигурации следующий вызов не будет компилироваться:
int i = boost::convert<int>("123").value(); // No converter provided
Однако после boost::cnv::by_default
определяется просто как:
struct boost::cnv::by_default : public boost::cnv::cstream {};
или потенциально настроен с дополнительным форматированием:
struct boost::cnv::by_default : public boost::cnv::cstream { by_default() { (*this)(std::uppercase)(std::hex); } };
код компилирует и развертывает boost::cnv::cstream
когда boost::convert()
называется без явно выраженного конвертера:
// No explicit converter provided. boost::cnv::by_default is used. int i = boost::convert<int>("F").value_or(-1); std::string s = boost::convert<std::string>(255).value_or("bad"); // 'i' and 's' are converted using boost::cnv::cstream // with std::uppercase and std::hex formatting applied. BOOST_TEST(i == 15); // 15(10) = F(16) BOOST_TEST(s == "FF"); // 255(10) = FF(16)
Сделка для удобства - это жесткая конфигурация конвертера (которая в определенных контекстах может быть желаемым поведением) и потенциально влияние производительности. Когда конвертер не представлен явно, конвертер по умолчанию создается, потенциально настроен, развернут и уничтожен для каждого boost::конверт()
вызов. Следовательно, если эффективность этого конкретного компонента важна, то реализация boost::cnv::by_default
должна будет учитывать это и убедиться, что эти операции дешевы.
Статья Default Converter раздела Chapter 1. Boost.Convert 2.0 Chapter 1. Boost.Convert 2.0 может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 1. Boost.Convert 2.0 ::
реклама |