Ranges are an extension of the Standard Template Library that makes its
iterators and algorithms more powerful by making them composable. Unlike
other range-like solutions which seek to do away with iterators, in
range-v3 ranges are an abstration layer on top of iterators.