Embedded Template Library 1.0
mem_cast.h
1#pragma once
2template <size_t Size_>
4{
5public:
6
7 static constexpr size_t Size = Size_;
8
9 //***********************************
10 template <typename T>
11 T& get()
12 {
13 return *reinterpret_cast<T*>(buffer);
14 }
15
16 //***********************************
17 template <typename T>
18 const T& get() const
19 {
20 return *reinterpret_cast<T*>(buffer);
21 }
22
23 template <typename T>
24 operator T()
25 {
26 return *reinterpret_cast<T*>(buffer);
27 }
28
29 //***********************************
30 constexpr size_t size() const
31 {
32 return Size;
33 }
34
35private:
36
37 char buffer[Size]
38};
39
40
41
42template <size_t Size_>
44{
45public:
46
47 static constexpr size_t Size = Size_;
48
49 //***********************************
50 template <typename T>
51 T& get()
52 {
53 return *reinterpret_cast<T*>(pbuffer);
54 }
55
56 //***********************************
57 template <typename T>
58 const T& get() const
59 {
60 return *reinterpret_cast<T*>(pbuffer);
61 }
62
63 template <typename T>
64 operator T()
65 {
66 return *reinterpret_cast<T*>(pbuffer);
67 }
68
69 //***********************************
70 constexpr size_t size() const
71 {
72 return Size;
73 }
74
75private:
76
77 char* pbuffer;
78};
Definition: mem_cast.h:44
Definition: mem_cast.h:4