Non-propagating cache (C++20)

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.

# See also