Embedded Template Library 1.0
Loading...
Searching...
No Matches
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
40template <size_t Size_>
42{
43public:
44
45 static constexpr size_t Size = Size_;
46
47 //***********************************
48 template <typename T>
49 T& get()
50 {
51 return *reinterpret_cast<T*>(pbuffer);
52 }
53
54 //***********************************
55 template <typename T>
56 const T& get() const
57 {
58 return *reinterpret_cast<T*>(pbuffer);
59 }
60
61 template <typename T>
62 operator T()
63 {
64 return *reinterpret_cast<T*>(pbuffer);
65 }
66
67 //***********************************
68 constexpr size_t size() const
69 {
70 return Size;
71 }
72
73private:
74
75 char* pbuffer;
76};
Definition mem_cast.h:42
Definition mem_cast.h:4