Το παρακάτω παράδειγμα ορίζει μια πρότυπη κλάση για στοίβα με
πεπερασμένο μέγεθος καθώς και δύο αντικείμενα της κλάσης αυτής,
μια στοίβα 20 ακεραίων και μια από 10 double.
#include <iostream.h>
#include <assert.h>
template <class T, int i>
class tstack
{
private:
        T data[i];
        int items;
public:
        tstack();
        void push(T item);
        T pop(void);
        void print(void);
};
// Constructor
template <class T, int i>
tstack<T, i>::tstack(void)
{
        items = 0;
}
template <class T, int i>
void
tstack<T, i>::push(T item)
{
        assert(items < i);
        data[items++] = item;
}
template <class T, int i>
T
tstack<T, i>::pop(void)
{
        assert(items > 0);
        return (data[--items]);
}
main()
{
        tstack <int, 20> int_stack;
        tstack <double, 10> double_stack;
        int_stack.push(7);
        int_stack.push(45);
        double_stack.push(3.14);
        double_stack.push(1.41);
        cout << int_stack.pop() << "\n";
        cout << int_stack.pop() << "\n";
        cout << double_stack.pop() << "\n";
        cout << double_stack.pop() << "\n";
}