GENEIAL  0.2=/
 All Classes Pages
Buildable.h
1 #pragma once
2 
3 #include <memory>
4 
5 #include <geneial/namespaces.h>
6 
7 geneial_private_namespace(geneial)
8 {
9 geneial_private_namespace(utility)
10 {
11 
12 geneial_export_namespace
13 {
14 
15 template<typename C>
16 class Buildable
17 {
18 public:
19  using ptr = std::shared_ptr<C>;
20  using const_ptr = std::shared_ptr<const C>;
21 
22  class Builder
23  {
24  public:
25  Builder()
26  {
27  }
28 
29  virtual ~Builder()
30  {
31  }
32 
33  virtual ptr create() = 0;
34  };
35 };
36 
37 
38 } /* export namespace */
39 } /* namespace utility */
40 } /* namespace geneial */