#include <iostream>

void saluda( ) {
   std::cout << "hola\n";
}

void despide( ) {
   std::cout << "adios\n";
}

void llama(auto f) {
   f( );
}

int main( ) {
   auto f = saluda;     // el tipo de f es void(*)( ) pero se tendría que declarar como   void(*f)( ) = saluda;   que se ve MUY feo
   f( );
   f = despide;
   f( );

   std::cout << "\n";

   llama(saluda);
   llama(despide);
}
