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
5
namespace
spark::patterns::details
6
{
12
template
<
typename
BaseType,
typename
... Args>
13
class
BaseCreator
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
}
spark::patterns::details::BaseCreator
A base class for all creators.
Definition
Creators.h:14
spark::patterns::details::DerivedCreator
The creator for a derived class.
Definition
Creators.h:31
sources
spark
patterns
include
spark
patterns
details
Creators.h
Generated by
1.11.0