The purpose of indirectly_readable is to specify generic algorithms using iterators:
p1878 wrote:
The STL as specified assumes that the value category and const-ness of an iterator does not affect whether it can be dereferenced [...] a type such as std::optional no longer models readable because the return type of its unary operator* member is different depending on the const-ness of the std::optional. Presently, we have no examples of algorithms that are generic over pointer-and-iterator-like things and optional-like things, so the lack of a concept that can be used to constrain such algorithms is not troubling.