#include #include template class StaticStack { public: T Pop(); void Push(T element); void Reset(); T Top(); private: std::array elementArray; // Number of elements in stack, points to the next empty slot size_t stackPointer = 0; }; // Returns random data when popping from empty array. template T StaticStack::Pop() { if (stackPointer > 0) { stackPointer--; } return elementArray[stackPointer]; } template void StaticStack::Push(T element) { if (stackPointer < elementArray.size()) { elementArray[stackPointer] = element; stackPointer++; } } template void StaticStack::Reset() { stackPointer = 0; } template T StaticStack::Top() { return elementArray[stackPointer - 1]; }