std::indirectly_readable(3)
๐ NAME ๐
std::indirectly_readable โ okay bestie, this is literally the page for std::indirectly_readable(3), from the C++ Standard Libary manual (yes, thatโs how the header spells it, and weโre moving on ๐
). The name is the same as the thing, which is honestly iconic.
โจ Synopsis โจ
Defined in header <iterator>.
template< class In >
concept __IndirectlyReadableImpl =
requires(const In in) {
typename std::iter_value_t<In>;
typename std::iter_reference_t<In>;
typename std::iter_rvalue_reference_t<In>;
{ *in } -> std::same_as<std::iter_reference_t<In>>;
{ ranges::iter_move(in) } -> std::same_as<std::iter_rvalue_reference_t<In>>;
} &&
(exposition only*)
std::common_reference_with<
std::iter_reference_t<In>&&, std::iter_value_t<In>&
> &&
std::common_reference_with<
std::iter_reference_t<In>&&, std::iter_rvalue_reference_t<In>&&
> &&
std::common_reference_with<
std::iter_rvalue_reference_t<In>&&, const std::iter_value_t<In>&
>;
template< class In >
concept indirectly_readable =
__IndirectlyReadableImpl<std::remove_cvref_t<In>>;
Plot twist: indirectly_readable is (since C++20) โ sheโs a modern girlie โจ
The concept indirectly_readable is modeled by types that are readable by applying operator*, such as pointers, smart pointers, and input iterators. Itโs giving โdereference and readโ energy, no cap.
๐ฆ Semantic requirements ๐ฆ
Given a value i of type I, I models indirectly_readable only if all concepts it subsumes are modeled and the expression *i is equality-preserving. Thatโs the whole vibe check, fr fr.
๐ธ Equality preservation ๐ธ
Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise). Important little rule, bestie โ donโt skip it.
Source/version and date, cute sign-off: this page came from http://cppreference.com, dated 2024.06.10. Byeee, mwah ๐
โจ๐ซถ
๐ฆ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 ยท MIT
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms