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