language: C++ 4.7.2 (gcc-4.7.2)
date: 612 days 6 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <algorithm>
#include <iterator>
 
struct AStruct
{
  AStruct() : a(-1), b(-2), c(-3), d(-4), e(-5), f(-6), g(-7) {}
  int a, b, c, d, e, f, g;
 
  friend
  std::ostream& operator<<(std::ostream& str, AStruct const& i)
  {
    return str << "a: " << i.a << ", b: " << i.b << ", c: " << i.c << ", d: " << i.d << ", e: " << i.e << ", f: " << i.f << ", g: " << i.g;
  }
};
 
template <typename DataType>
struct page
{
  char data[128];
};
 
int main(void)
{
  page<AStruct> f;
 
  new(f.data) AStruct();
 
  AStruct* fp = static_cast<AStruct*>(reinterpret_cast<void*>(f.data));
  std::cout << *fp << std::endl;
 
  fp->a = 1;
  fp->b = 2;
  fp->c = 3;
  fp->d = 4;
  fp->e = 5;
  fp->f = 6;
  fp->g = 7;
 
  std::cout << *fp << std::endl;
 
  std::cout << std::hex << std::showbase;
  std::copy(f.data, f.data + sizeof(AStruct), std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
 
  return 0;
}