#pragma once #include #include template class AbstractScopeSequenceHolder { std::vector>& m_all_sequences; std::vector& m_scope_sequences; protected: AbstractScopeSequenceHolder(std::vector>& allSequences, std::vector& scopeSequences) : m_all_sequences(allSequences), m_scope_sequences(scopeSequences) { } void AddSequence(std::unique_ptr test) const { m_scope_sequences.push_back(test.get()); m_all_sequences.emplace_back(std::move(test)); } public: virtual ~AbstractScopeSequenceHolder() = default; AbstractScopeSequenceHolder(const AbstractScopeSequenceHolder& other) = delete; AbstractScopeSequenceHolder(AbstractScopeSequenceHolder&& other) noexcept = default; AbstractScopeSequenceHolder& operator=(const AbstractScopeSequenceHolder& other) = delete; AbstractScopeSequenceHolder& operator=(AbstractScopeSequenceHolder&& other) noexcept = delete; };