Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Chapter 1. Boost.Convert 2.0
Next

Chapter 1. Boost.Convert 2.0

Vladimir Batov

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

[Important] Important

Requires C++11 and up.

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: December 02, 2021 at 06:52:22 GMT


Next