CommonLibVR
BSTSingleton.h
Go to the documentation of this file.
1 #pragma once
2 
3 namespace RE
4 {
5  //=====================================================
6  // BSTSingletonExplicit
7  //=====================================================
8 
9  template <class T>
11  {};
12 
13  //=====================================================
14  // BSTSingletonImplicit
15  //=====================================================
16 
17  template <class T>
19  {};
20 
21  //=====================================================
22  // BSTSingletonSDM
23  //=====================================================
24 
25  template <class>
26  struct BSTSingletonSDMBase;
27 
28  template <class T>
30  {};
31 
32  template <class T, class Alloc = BSTSingletonSDMOpStaticBuffer<T>>
33  struct BSTSDMTraits
34  {
35  using Type = T;
36  using Allocator = Alloc;
37  };
38 
39  template <class Traits>
41  public Traits,
42  public Traits::Allocator
43  {
44  using Type = typename Traits::Type;
45  using Allocator = typename Traits::Allocator;
46  };
47 
48  template <class T, template <class> class Singleton = BSTSingletonSDMOpStaticBuffer>
49  struct BSTSingletonSDM : public BSTSingletonSDMBase<BSTSDMTraits<T, Singleton<T>>>
50  {};
51 }
constexpr REL::ID Singleton(static_cast< std::uint64_t >(514494))
Definition: AbsorbEffect.h:6
Definition: BSTSingleton.h:34
Alloc Allocator
Definition: BSTSingleton.h:36
T Type
Definition: BSTSingleton.h:35
Definition: BSTSingleton.h:11
Definition: BSTSingleton.h:19
Definition: BSTSingleton.h:43
typename Traits::Type Type
Definition: BSTSingleton.h:44
typename Traits::Allocator Allocator
Definition: BSTSingleton.h:45
Definition: BSTSingleton.h:30
Definition: BSTSingleton.h:50