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::string_view
and std::span
, which are not associated with std::ranges::view
.
Range views
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.