## Chapter 1. Boost.Convert 2.0

### Vladimir Batov

Copyright © 2009-2022 Vladimir Batov

Distributed under the Boost Software License, Version 1.0. See copy at http://www.boost.org/LICENSE_1_0.txt.

| Important
Requires C++11 and up.

## Rationale

I was using textual configuration files extensively and was also processing and preparing considerable amounts of data in XML. Consequently, I had a need for an extendible library that would provide a uniform interface to convert various data between their internal binary representations and external (predominantly textual) representations.

The `boost::lexical_cast` library (with its orthogonal and extendible design) looked very promising compared to others (see The String Formatters of Manor Farm by H. Sutter for the discussion of alternatives). Unfortunately,

- many deployed user types simply did not meet `boost::lexical_cast` requirements (namely, Default Constructibility);
- failure to convert a user-provided configuration parameter was not that rare or exceptional to justify the hassle and the overhead of exception processing; consequently, additional flexibility (if, when and how) in handling conversion failures was needed;
- additional conversion-related functionality (such as formatting and locale support) were needed.

The original hope was to see `boost::lexical_cast` extended to be applicable to a wider range of deployment scenarios. However, after discussions with Kevlin Henney (the `boost::lexical_cast` author) and in the Boost Developers forum it was collectively decided that the desired extensions were not compatible with the original design and the idea of what `boost::lexical_cast` embodied and, therefore, a new component with richer interface and functionality was needed. That decision resulted in the development of Boost.Convert described in this document.

Last revised: June 17, 2022 at 20:59:55 GMT |