#pragma once #include #include #include template class MutantStack : public std::stack { public: MutantStack(void) {} MutantStack(const MutantStack &cpy) : std::stack(cpy) {} ~MutantStack(void) {} MutantStack &operator=(const MutantStack &cpy) { if (this != &cpy) { std::stack::operator=(cpy); } return *this; } typedef typename std::stack::container_type::iterator iterator; iterator begin(void) { return std::stack::c.begin(); } iterator end(void) { return std::stack::c.end(); } typedef typename std::stack::container_type::const_iterator const_iterator; const_iterator begin(void) const { return std::stack::c.begin(); } const_iterator end(void) const { return std::stack::c.end(); } private: };