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_view> 
 
auto createToCall(auto op, auto... args) 
{ 
  return [op, ...args = std::move(args)] () -> decltype(auto) { 
           return op(args...); 
         }; 
} 
 
void printWithGAndNoG(std::string_view s) 
{ 
  std::cout << s << "g " << s << '\n'; 
} 
 
int main() 
{ 
  auto printHero = createToCall(printWithGAndNoG, "Zhan"); 
  //...  
 
  printHero(); 
}