Link.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <type_traits>
4 #include <typeindex>
5 
6 namespace iv
7 {
8 
15 template< class Target >
16 class Link
17 {
18 public:
19  Link();
20  Link( Target * );
21 
22  // setter
23  void set( Target * );
24 
25  // getter
26  Target * get();
27  Target * operator->();
28  Target * operator*();
29 
30 private:
31  Target * _target;
32 };
33 
40 class VLink
41 {
42 public:
43  VLink();
44 
45  template< class Target >
46  VLink( Target * );
47 
48  // setter
49  template< class Target >
50  void set( Target * );
51 
52  // getter
53  std::type_index type();
54 
55  template< class Target >
56  Target * get();
57 
58 private:
59  std::type_index _type;
60  void * _target;
61 };
62 
63 }
64 
65 #include "Link.inl"