#include // Provides size_t #include // Provides assert template class Stack { public: enum { CAPACITY = 64 }; // See page 99 for a better alternative Stack( ) { used = 0; } // CONSTRUCTOR void push(const Item& entry); // MODIFICATION functions Item pop( ); size_t size( ) const { return used; } bool is_empty( ) const { return used == 0; } Item peek( ) const; private: Item data[CAPACITY]; // Partially-filled array size_t used; // How much of array is being used }; template void Stack::push(const Item& entry) { assert(size( ) < CAPACITY); data[used] = entry; used++; } template Item Stack::pop( ) { assert(!is_empty( )); used--; return data[used]; } template Item Stack::peek( ) const { assert(!is_empty( )); return data[used-1]; }