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 }; 140