#pragma once #include "object.hpp" class stack { struct node { ptr value; node* next; node( const object& v ); node( ptr&& v, node* n ); }; node* head; void copy(const stack& o); public: stack(); stack(const stack& o); stack(stack&& o); ~stack(); stack& operator= (const stack& o); stack& operator= (stack&& o); void clear(); bool empty() const; void push(ptr&& value); ptr pop(); };