#pragma once #include "nf7.hh" #include "common/future.hh" namespace nf7 { template class Factory : public nf7::File::Interface { public: using Product = T; Factory() = default; Factory(const Factory&) = delete; Factory(Factory&&) = delete; Factory& operator=(const Factory&) = delete; Factory& operator=(Factory&&) = delete; virtual Product Create() noexcept = 0; }; template using AsyncFactory = Factory>; } // namespace nf7