#pragma once #include "../../generator/generator.h" #include "AbstractVectorFactory.h" #include "fill_with.h" #include namespace atlas::collection { template class SingleThreadedVectorFactory : public AbstractVectorFactory { public: SingleThreadedVectorFactory(std::unique_ptr> generator) : m_gen { std::move(generator) } { } SingleThreadedVectorFactory(SingleThreadedVectorFactory const&) = delete; SingleThreadedVectorFactory(SingleThreadedVectorFactory&&) = delete; SingleThreadedVectorFactory& operator=(SingleThreadedVectorFactory const&) = delete; SingleThreadedVectorFactory& operator=(SingleThreadedVectorFactory&&) = delete; auto fill(std::vector& v) -> void override final { detail::fill_with(v.begin(), v.end(), [this]() { return m_gen->next(); }); } private: std::unique_ptr> m_gen; }; }