Boost C++ Libraries Home Libraries People FAQ More


History and Acknowledgement

Version 1 - before Boost 1.43

The library have been under way for a long time. Dietmar Kühl originally intended to submit an array_traits class template which had most of the functionality present now, but only for arrays and standard containers.

Meanwhile work on algorithms for containers in various contexts showed the need for handling pairs of iterators, and string libraries needed special treatment of character arrays. In the end it made sense to formalize the minimal requirements of these similar concepts. And the results are the Range concepts found in this library.

The term Range was adopted because of paragraph 24.1/7 from the C++ standard:

Most of the library's algorithmic templates that operate on data structures have interfaces that use ranges. A range is a pair of iterators that designate the beginning and end of the computation. A range [i, i) is an empty range; in general, a range [i, j) refers to the elements in the data structure starting with the one pointed to by i and up to but not including the one pointed to by j. Range [i, j) is valid if and only if j is reachable from i. The result of the application of functions in the library to invalid ranges is undefined.

Special thanks goes to

The concept checks and their documentation was provided by Daniel Walker.

Version 2 - Boost 1.43 and beyond

This version introduced Range Adaptors and Range Algorithms. This version 2 is the result of a merge of all of the RangeEx features into Boost.Range.

There were an enormous number of very significant contributors through all stages of this library.

Prior to Boost.RangeEx there had been a number of Range library implementations, these include library implementations by Eric Niebler, Adobe, Shunsuke Sogame etc. Eric Niebler contributed the Range Adaptor idea which is arguably the single biggest innovation in this library. Inevitably a great deal of commonality evolved in each of these libraries, but a considerable amount of effort was expended to learn from all of the divergent techniques.

The people in the following list all made contributions in the form of reviews, user feedback, design suggestions, or defect detection:

Regardless of how I write this section it will never truly fairly capture the gratitude that I feel to all who have contributed. Thank you everyone.