#include class stackEmptyException : public std::exception { public: stackEmptyException() noexcept {} const char* what() const { return "Attempt to pop empty stack."; } }; template > class stack { public: stack() {} bool isEmpty() const { return body.empty(); } void push(const T& item) { body.push_back(item); } const T& top() { return body.back(); } void pop() { if(this.isEmpty()) throw stackEmptyException(); body.pop_back(); } private: Container body; };