Views in the standard library
So far in this chapter, we have been talking about views from the Ranges library. As was described earlier, these view types need to be constructed in constant time and also have constant-time copy, move, and assignment operators. However, in C++, we have talked about view classes before the Ranges library was added to C++20. These view classes are non-owning types, just like
std::ranges::view, but without the complexity guarantees.
In this section, we will begin by exploring the views from the Ranges library that are associated with the
std::ranges::view concept, and then move on to
std::span, which are not associated with
There are already many views in the Ranges library, and I think we will see even more of them in future versions of C++. This section will provide a quick overview of some of the available views and also put them in different categories based on what they do.