Non-propagating cache (C++20)
Min standard notice:
Some range adaptors such as ranges::join_view and ranges::lazy_split_view conditionally store value (e.g. an iterator) which is specified in terms of an exposition-only class template non-propagating-cache.
# Declarations
template< class T >
requires std::is_object_v<T>
class /*non-propagating-cache*/;
(since C++20) (exposition only*)
# Notes
non-propagating-cache is used in implementations to cache the result of begin() to provide an amortized constant time complexity of the method.