SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
Creators.h
1#pragma once
2
3#include <memory>
4
5namespace spark::patterns::details
6{
12 template <typename BaseType, typename... Args>
14 {
15 public:
16 using BasePtr = std::unique_ptr<BaseType>;
17
18 public:
19 virtual ~BaseCreator() = default;
20 [[nodiscard]] virtual BasePtr create(Args&&... args) const = 0;
21 };
22
29 template <typename BaseType, typename DerivedType, typename... Args>
30 class DerivedCreator final : public BaseCreator<BaseType, Args...>
31 {
32 public:
33 [[nodiscard]] typename BaseCreator<BaseType, Args...>::BasePtr create(Args&&... args) const override
34 {
35 return std::make_unique<DerivedType>(std::forward<Args>(args)...);
36 }
37 };
38}
A base class for all creators.
Definition Creators.h:14
The creator for a derived class.
Definition Creators.h:31