cpp/ranges/rbegin

Returns an iterator to the last element of the argument.

If is an array type and  is incomplete, then the call to  is ill-formed, no diagnostic required.

If the argument is an lvalue or is, then a call to  is expression-equivalent to:
 * , if that expression is valid and its type models std.
 * 1) Otherwise,, if  is a class or enumeration type, that expression is valid and its type models std, where the overload resolution is performed with the following candidates:
 * 2) * any declarations of found by argument-dependent lookup
 * 3) Otherwise,  if both  and  are valid expressions, have the same type, and that type models std.
 * 1) Otherwise,  if both  and  are valid expressions, have the same type, and that type models std.
 * 1) Otherwise,  if both  and  are valid expressions, have the same type, and that type models std.

In all other cases, a call to is ill-formed, which can result in substitution failure when  appears in the immediate context of a template instantiation.