The following code example is taken from the book
 
  C++ Templates - The Complete Guide
 by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002
 
  © Copyright David Vandevoorde and Nicolai M. Josuttis 2002
#include <iostream>
#include <string>
#include <cstdlib>
#include "stack5.hpp"
int main()
{
    try {
        Stack<int>   intStack;       // stack of ints
        Stack<float> floatStack;     // stack of floats
        // manipulate int stack
        intStack.push(42);
        intStack.push(7);
        // manipulate float stack
        floatStack.push(7.7);
        // assign stacks of different type
        floatStack = intStack;
        // print float stack
        std::cout << floatStack.top() << std::endl;
        floatStack.pop();
        std::cout << floatStack.top() << std::endl;
        floatStack.pop();
        std::cout << floatStack.top() << std::endl;
        floatStack.pop();
    }
    catch (std::exception const& ex) {
        std::cerr << "Exception: " << ex.what() << std::endl;
        return EXIT_FAILURE;  // exit program with ERROR status
    }
}