namespace lasd { /* ************************************************************************** */ // Constructors template StackLst::StackLst(const LinearContainer& linear) : List(linear){} template StackLst::StackLst(const StackLst& stcklist) : List(stcklist){} template StackLst::StackLst(StackLst&& stcklist) noexcept : List(std::move(stcklist)){} // Destructor template StackLst::~StackLst(){ Clear(); } template StackLst& StackLst::operator=(const StackLst& copyFrom){ List::operator=(copyFrom); return *this; } template StackLst& StackLst::operator=(StackLst&& moveFrom) noexcept{ List::operator=(std::move(moveFrom)); return *this; } template bool StackLst::operator==(const StackLst& stcklist) const noexcept{ return List::operator==(stcklist); } template bool StackLst::operator!=(const StackLst& stcklist) const noexcept{ return List::operator!=(stcklist); } // Specific member functions (inherited from Stack) template void StackLst::Push(const Data& element){ List::InsertAtFront(element); } template void StackLst::Push(Data&& element) noexcept{ List::InsertAtFront(std::move(element)); } template Data& StackLst::Top() const{ return List::Front(); } template void StackLst::Pop(){ List::RemoveFromFront(); } template Data StackLst::TopNPop(){ return List::FrontNRemove(); } template void StackLst::Clear(){ List::Clear(); } /* ************************************************************************** */ }