#include <iostream>

template<typename T>
void intercambia(T& a, T& b) {      // todavía es posible mejorar este algoritmo
   T c = a;
   a = b;
   b = c;
}

int main( ) {
   int a = 2, b = 7;
   intercambia(a, b);
   std::cout << a << " " << b << "\n";

   double x = 2.71, y = 3.14;
   intercambia(x, y);
   std::cout << x << " " << y << "\n";
}
