Я широко использовал текстовые конфигурационные файлы, а также обрабатывал и готовил значительные объемы данных в XML. Следовательно, у меня была потребность врасширяемойбиблиотеке, которая обеспечивала бы.Униформаинтерфейс для преобразования различных данных между их внутренними двоичными представлениями и внешними (преимущественно текстовыми) представлениями.
Библиотека<boost::lexical_cast
>(с ее ортогональным и расширяемым дизайном) выглядела очень перспективной по сравнению с другими (см.Струнные Форматеры усадебной фермыХ. Саттера для обсуждения альтернатив). К сожалению,
- Многие развёрнутые типы пользователей просто не соответствовали<
boost::lexical_cast
>требованиям (а именно,).Конструктивность по умолчанию;
- неспособность преобразовать параметр конфигурации, предоставленный пользователем, не была такой редкой или исключительной, чтобы оправдать хлопоты и накладные расходы на обработку исключений и, следовательно, дополнительную гибкость, если,, когдаи, какобрабатывать сбои преобразования;
- Необходимы дополнительные функции, связанные с конверсией (форматирование и поддержка локализации).
Первоначальная надежда состояла в том, что<boost::lexical_cast
>будет применяться к более широкому спектру сценариев развертывания. Однако после обсуждений с Кевлином Хенни (автором<boost::lexical_cast
>) и на форуме Boost Developers было коллективно решено, что желаемые расширения не совместимы с оригинальным дизайном и идеей того, что<boost::lexical_cast
>воплощено и, следовательно, необходим новый компонент с более богатым интерфейсом и функциональностью. Это решение привело к развитию.Boost.Convert, описанные в этом документе.