Chris@16
|
1 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
2 // class_member_traits.hpp
|
Chris@16
|
3 // Contains specializations of the class_member_traits\<\> class template.
|
Chris@16
|
4 //
|
Chris@16
|
5 // Copyright 2008 Eric Niebler. Distributed under the Boost
|
Chris@16
|
6 // Software License, Version 1.0. (See accompanying file
|
Chris@16
|
7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
8 template<typename T, typename U >
|
Chris@16
|
9 struct class_member_traits<T (U::*)()>
|
Chris@16
|
10 {
|
Chris@16
|
11 typedef U class_type;
|
Chris@16
|
12 typedef T result_type;
|
Chris@16
|
13 };
|
Chris@16
|
14 template<typename T, typename U >
|
Chris@16
|
15 struct class_member_traits<T (U::*)() const>
|
Chris@16
|
16 {
|
Chris@16
|
17 typedef U class_type;
|
Chris@16
|
18 typedef T result_type;
|
Chris@16
|
19 };
|
Chris@16
|
20 template<typename T, typename U , typename A0>
|
Chris@16
|
21 struct class_member_traits<T (U::*)(A0)>
|
Chris@16
|
22 {
|
Chris@16
|
23 typedef U class_type;
|
Chris@16
|
24 typedef T result_type;
|
Chris@16
|
25 };
|
Chris@16
|
26 template<typename T, typename U , typename A0>
|
Chris@16
|
27 struct class_member_traits<T (U::*)(A0) const>
|
Chris@16
|
28 {
|
Chris@16
|
29 typedef U class_type;
|
Chris@16
|
30 typedef T result_type;
|
Chris@16
|
31 };
|
Chris@16
|
32 template<typename T, typename U , typename A0 , typename A1>
|
Chris@16
|
33 struct class_member_traits<T (U::*)(A0 , A1)>
|
Chris@16
|
34 {
|
Chris@16
|
35 typedef U class_type;
|
Chris@16
|
36 typedef T result_type;
|
Chris@16
|
37 };
|
Chris@16
|
38 template<typename T, typename U , typename A0 , typename A1>
|
Chris@16
|
39 struct class_member_traits<T (U::*)(A0 , A1) const>
|
Chris@16
|
40 {
|
Chris@16
|
41 typedef U class_type;
|
Chris@16
|
42 typedef T result_type;
|
Chris@16
|
43 };
|
Chris@16
|
44 template<typename T, typename U , typename A0 , typename A1 , typename A2>
|
Chris@16
|
45 struct class_member_traits<T (U::*)(A0 , A1 , A2)>
|
Chris@16
|
46 {
|
Chris@16
|
47 typedef U class_type;
|
Chris@16
|
48 typedef T result_type;
|
Chris@16
|
49 };
|
Chris@16
|
50 template<typename T, typename U , typename A0 , typename A1 , typename A2>
|
Chris@16
|
51 struct class_member_traits<T (U::*)(A0 , A1 , A2) const>
|
Chris@16
|
52 {
|
Chris@16
|
53 typedef U class_type;
|
Chris@16
|
54 typedef T result_type;
|
Chris@16
|
55 };
|
Chris@16
|
56 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3>
|
Chris@16
|
57 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3)>
|
Chris@16
|
58 {
|
Chris@16
|
59 typedef U class_type;
|
Chris@16
|
60 typedef T result_type;
|
Chris@16
|
61 };
|
Chris@16
|
62 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3>
|
Chris@16
|
63 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3) const>
|
Chris@16
|
64 {
|
Chris@16
|
65 typedef U class_type;
|
Chris@16
|
66 typedef T result_type;
|
Chris@16
|
67 };
|
Chris@16
|
68 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
|
Chris@16
|
69 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4)>
|
Chris@16
|
70 {
|
Chris@16
|
71 typedef U class_type;
|
Chris@16
|
72 typedef T result_type;
|
Chris@16
|
73 };
|
Chris@16
|
74 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
|
Chris@16
|
75 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4) const>
|
Chris@16
|
76 {
|
Chris@16
|
77 typedef U class_type;
|
Chris@16
|
78 typedef T result_type;
|
Chris@16
|
79 };
|
Chris@16
|
80 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
|
Chris@16
|
81 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4 , A5)>
|
Chris@16
|
82 {
|
Chris@16
|
83 typedef U class_type;
|
Chris@16
|
84 typedef T result_type;
|
Chris@16
|
85 };
|
Chris@16
|
86 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
|
Chris@16
|
87 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4 , A5) const>
|
Chris@16
|
88 {
|
Chris@16
|
89 typedef U class_type;
|
Chris@16
|
90 typedef T result_type;
|
Chris@16
|
91 };
|
Chris@16
|
92 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
|
Chris@16
|
93 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
|
Chris@16
|
94 {
|
Chris@16
|
95 typedef U class_type;
|
Chris@16
|
96 typedef T result_type;
|
Chris@16
|
97 };
|
Chris@16
|
98 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
|
Chris@16
|
99 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4 , A5 , A6) const>
|
Chris@16
|
100 {
|
Chris@16
|
101 typedef U class_type;
|
Chris@16
|
102 typedef T result_type;
|
Chris@16
|
103 };
|
Chris@16
|
104 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
|
Chris@16
|
105 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
|
Chris@16
|
106 {
|
Chris@16
|
107 typedef U class_type;
|
Chris@16
|
108 typedef T result_type;
|
Chris@16
|
109 };
|
Chris@16
|
110 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
|
Chris@16
|
111 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7) const>
|
Chris@16
|
112 {
|
Chris@16
|
113 typedef U class_type;
|
Chris@16
|
114 typedef T result_type;
|
Chris@16
|
115 };
|
Chris@16
|
116 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
|
Chris@16
|
117 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
|
Chris@16
|
118 {
|
Chris@16
|
119 typedef U class_type;
|
Chris@16
|
120 typedef T result_type;
|
Chris@16
|
121 };
|
Chris@16
|
122 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
|
Chris@16
|
123 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8) const>
|
Chris@16
|
124 {
|
Chris@16
|
125 typedef U class_type;
|
Chris@16
|
126 typedef T result_type;
|
Chris@16
|
127 };
|
Chris@16
|
128 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
|
Chris@16
|
129 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
|
Chris@16
|
130 {
|
Chris@16
|
131 typedef U class_type;
|
Chris@16
|
132 typedef T result_type;
|
Chris@16
|
133 };
|
Chris@16
|
134 template<typename T, typename U , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
|
Chris@16
|
135 struct class_member_traits<T (U::*)(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9) const>
|
Chris@16
|
136 {
|
Chris@16
|
137 typedef U class_type;
|
Chris@16
|
138 typedef T result_type;
|
Chris@16
|
139 };
|