/rend") (C++20)  |  returns a reverse end iterator to a range   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_rend&action=edit)  
[ ranges::crbegin  ](/w/cpp/ranges/crbegin "cpp/ranges/crbegin") (C++20)  |  returns a reverse iterator to a read-only range   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_crbegin&action=edit)  
[ ranges::crend  ](/w/cpp/ranges/crend "cpp/ranges/crend") (C++20)  |  returns a reverse end iterator to a read-only range   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_crend&action=edit)  
[ ranges::size  ](/w/cpp/ranges/size "cpp/ranges/size") (C++20)  |  returns an integer equal to the size of a range   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_size&action=edit)  
[ ranges::ssize  ](/w/cpp/ranges/ssize "cpp/ranges/ssize") (C++20)  |  returns a signed integer equal to the size of a range   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_ssize&action=edit)  
[ ranges::empty  ](/w/cpp/ranges/empty "cpp/ranges/empty") (C++20)  |  checks whether a range is empty   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_empty&action=edit)  
[ ranges::data  ](/w/cpp/ranges/data "cpp/ranges/data") (C++20)  |  obtains a pointer to the beginning of a contiguous range   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_data&action=edit)  
[ ranges::cdata  ](/w/cpp/ranges/cdata "cpp/ranges/cdata") (C++20)  |  obtains a pointer to the beginning of a read-only contiguous range   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_cdata&action=edit)  
  
###  Enumerations  
  
Defined in namespace ` std::ranges `  
[ ranges::subrange_kind  ](/w/cpp/ranges/subrange_kind "cpp/ranges/subrange kind") (C++20)  |  specifies whether a  [ std::ranges::subrange ](/w/cpp/ranges/subrange "cpp/ranges/subrange") models  [ std::ranges::sized_range ](/w/cpp/ranges/sized_range "cpp/ranges/sized range")   
(enum)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_subrange_kind&action=edit)  
  
###  Helpers  
  
[ std::tuple_size  <std::ranges::subrange> ](/w/cpp/ranges/subrange/tuple_size "cpp/ranges/subrange/tuple size") (C++20)  |  obtains the number of components of a  [ std::ranges::subrange ](/w/cpp/ranges/subrange "cpp/ranges/subrange")   
(class template specialization)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/subrange/dsc_tuple_size&action=edit)  
[ std::tuple_element  <std::ranges::subrange> ](/w/cpp/ranges/subrange/tuple_element "cpp/ranges/subrange/tuple element") (C++20)  |  obtains the type of the iterator or the sentinel of a  [ std::ranges::subrange ](/w/cpp/ranges/subrange "cpp/ranges/subrange")   
(class template specialization)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/subrange/dsc_tuple_element&action=edit)  
[ get  (std::ranges::subrange)  ](/w/cpp/ranges/subrange/get "cpp/ranges/subrange/get") (C++20)  |  obtains iterator or sentinel from a  [ std::ranges::subrange ](/w/cpp/ranges/subrange "cpp/ranges/subrange")   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/subrange/dsc_get&action=edit)  
[ from_range_t  from_range  ](/w/cpp/ranges/from_range "cpp/ranges/from range") (C++23)  |  from-range construction tag   
(tag)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_from_range&action=edit)  
  
###  [ [ edit ](/mwiki/index.php?title=cpp/header/ranges&action=edit&section=2
"Ed