Introduction

!!! DISCLAIMER !!!

This document is a work in progress. I aim to finish a first release in the next few weeks. Until then, this document might contain some minor errors as not all code examples have not yet been extensively tested.

What are ranges?

TODO

Add short and concise introduction to what ranges are and what the range-v3 library is about.

Why this document?

  • Only little documentation to be found scatter across the web
  • Eric Niebler himself -- the Author of range-v3 -- calls the official documentation "woefully incomplete"
  • I want to have a concise overview of the library for myself to refer to
  • I want to get more familiar with the library
  • Moreover, since many views/algorithm/actions are anyway available in the STL, I will get more familiar with the STL as well
  • Maybe someone else will find this useful, hence I make this document public

Why not simply use C++20/23 ranges?

  • range-v3 is more complete at this point
  • C++20 only introduces a subset of the views available in range-v3
  • C++23 extends the list of available views, but still does not add actions
  • If your company is not keeping up to date with the latest C++ standards, range-v3 can be used with C++14-compatible compilers

Other sources

A lot of the content in this documentation is loosely based on great articles, videos, and other forms of media. Here is a (incomplete) list of resources that I used to learn more about the range-v3 library.