#pragma once #include #include template class cst_stack { public: cst_stack() {} virtual ~cst_stack() {} virtual void push(T& val) = 0; virtual void push(T&& val) = 0; virtual T& pop() = 0; virtual T& top() = 0; virtual bool IsEmpty() = 0; virtual bool IsFull() = 0; }; template class cst_arr_stack : public cst_stack { public: cst_arr_stack() noexcept :arr(new T[size]), top_(0), max_(size) { } ~c..