#pragma once #include #include namespace LtsScriptTimeline { template class TemporaryPointerVector : public QVector { static_assert(std::is_pointer::value, "Type must be of pointer type"); public: TemporaryPointerVector() = default; explicit TemporaryPointerVector(const QVector &other) { discard(); this->append(other); } ~TemporaryPointerVector() { discard(); } void setDiscardable(bool discardable) { m_discard = discardable; } private: bool m_discard = true; void discard() { if (m_discard) qDeleteAll(this->begin(), this->end()); this->clear(); } }; }