#ifndef ZNODE_VECTOR_H #define ZNODE_VECTOR_H #include //using znode_vector = std::vector; template class znode_vector : public std::vector { public: // FIX! implement this! // why delete?? znode_vector() = default; znode_vector(const znode_vector&) = delete; znode_vector& operator=(const znode_vector&) = delete; virtual ~znode_vector() { } znode_vector* clone() const { znode_vector* new_list = new znode_vector; clone_into( *new_list ); return new_list; } void clone_into( znode_vector& new_list ) const { new_list.clear(); for(const auto entry : *this ) new_list.push_back( entry->clone() ); } void clone_from( const znode_vector& src_list ) { this->clear(); for(const auto entry : src_list ) this->push_back( entry->clone() ); } }; #endif // ZNODE_VECTOR_H