cpp/algorithm/ranges

C++20 provides constrained versions of most algorithms in the namespace. In these algorithms, a range can be specified as either an iterator-sentinel pair or as a single argument, and projections and pointer-to-member callables are supported. Additionally, the return types of most algorithms have been changed to return all potentially useful information computed during the execution of the algorithm.