The following code example is taken from the book
 
  C++20 - The Complete Guide
 by Nicolai M. Josuttis,
 Leanpub, 2021 
 
 The code is licensed under a
 
     Creative Commons Attribution 4.0 International License.
      
 
 
// raw code
 
#include <iostream> 
#include <string> 
#include <vector> 
#include <ranges> 
#include <algorithm> 
#include <span> 
 
template<typename T, std::size_t Sz> 
void printSpan(std::span<T, Sz> sp) 
{ 
  for (const auto& elem : sp) { 
    std::cout << '"' << elem << "\" "; 
  } 
  std::cout << '\n'; 
} 
 
int main() 
{ 
  std::vector<std::string> vec{"New York", "Tokyo", "Rio", "Berlin", "Sydney"}; 
 
  // define view to first 3 elements:  
  std::span<const std::string, 3> sp3{vec.data(), 3}; 
  std::cout << "first 3:              "; 
  printSpan(sp3); 
 
  // sort referenced elements:  
  std::ranges::sort(vec); 
  std::cout << "first 3 after sort(): "; 
  printSpan(sp3); 
 
  // insert a new element:  
  // - must reassign the internal array of the vector if it reallocated new memory  
  auto oldCapa = vec.capacity(); 
  vec.push_back("Cairo"); 
  if (oldCapa != vec.capacity()) { 
    sp3 = std::span<std::string, 3>{vec.data(), 3}; 
  } 
  std::cout << "first 3: "; 
  printSpan(sp3); 
 
  // let span refer to the last three elements:  
  sp3 = std::span<const std::string, 3>{vec.end()-3, vec.end()}; 
  std::cout << "last 3:  "; 
  printSpan(sp3); 
 
  // let span refer to the last three elements:  
  sp3 = std::span{vec}.last<3>(); 
  std::cout << "last 3:  "; 
  printSpan(sp3); 
}