File indexing completed on 2025-01-18 09:50:25
0001
0002
0003
0004
0005
0006
0007
0008
0009 template<typename PolyFun , typename A0>
0010 struct poly_function_traits<PolyFun, PolyFun(A0), mpl::size_t<sizeof(poly_function_t)> >
0011 {
0012 typedef typename PolyFun::template impl<const A0> function_type;
0013 typedef typename function_type::result_type result_type;
0014 };
0015
0016 template<typename PolyFun , typename A0>
0017 struct as_mono_function_impl<PolyFun(A0), true>
0018 {
0019 typedef typename PolyFun::template impl<const A0> type;
0020 };
0021
0022 template<typename PolyFun , typename A0>
0023 struct as_mono_function_impl<PolyFun(A0), false>
0024 {
0025 typedef PolyFun type;
0026 };
0027
0028 template<typename PolyFun , typename A0>
0029 struct as_mono_function<PolyFun(A0)>
0030 : as_mono_function_impl<PolyFun(A0), is_poly_function<PolyFun>::value>
0031 {};
0032
0033 template<typename PolyFun , typename A0 , typename A1>
0034 struct poly_function_traits<PolyFun, PolyFun(A0 , A1), mpl::size_t<sizeof(poly_function_t)> >
0035 {
0036 typedef typename PolyFun::template impl<const A0 , const A1> function_type;
0037 typedef typename function_type::result_type result_type;
0038 };
0039
0040 template<typename PolyFun , typename A0 , typename A1>
0041 struct as_mono_function_impl<PolyFun(A0 , A1), true>
0042 {
0043 typedef typename PolyFun::template impl<const A0 , const A1> type;
0044 };
0045
0046 template<typename PolyFun , typename A0 , typename A1>
0047 struct as_mono_function_impl<PolyFun(A0 , A1), false>
0048 {
0049 typedef PolyFun type;
0050 };
0051
0052 template<typename PolyFun , typename A0 , typename A1>
0053 struct as_mono_function<PolyFun(A0 , A1)>
0054 : as_mono_function_impl<PolyFun(A0 , A1), is_poly_function<PolyFun>::value>
0055 {};
0056
0057 template<typename PolyFun , typename A0 , typename A1 , typename A2>
0058 struct poly_function_traits<PolyFun, PolyFun(A0 , A1 , A2), mpl::size_t<sizeof(poly_function_t)> >
0059 {
0060 typedef typename PolyFun::template impl<const A0 , const A1 , const A2> function_type;
0061 typedef typename function_type::result_type result_type;
0062 };
0063
0064 template<typename PolyFun , typename A0 , typename A1 , typename A2>
0065 struct as_mono_function_impl<PolyFun(A0 , A1 , A2), true>
0066 {
0067 typedef typename PolyFun::template impl<const A0 , const A1 , const A2> type;
0068 };
0069
0070 template<typename PolyFun , typename A0 , typename A1 , typename A2>
0071 struct as_mono_function_impl<PolyFun(A0 , A1 , A2), false>
0072 {
0073 typedef PolyFun type;
0074 };
0075
0076 template<typename PolyFun , typename A0 , typename A1 , typename A2>
0077 struct as_mono_function<PolyFun(A0 , A1 , A2)>
0078 : as_mono_function_impl<PolyFun(A0 , A1 , A2), is_poly_function<PolyFun>::value>
0079 {};
0080
0081 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3>
0082 struct poly_function_traits<PolyFun, PolyFun(A0 , A1 , A2 , A3), mpl::size_t<sizeof(poly_function_t)> >
0083 {
0084 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3> function_type;
0085 typedef typename function_type::result_type result_type;
0086 };
0087
0088 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3>
0089 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3), true>
0090 {
0091 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3> type;
0092 };
0093
0094 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3>
0095 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3), false>
0096 {
0097 typedef PolyFun type;
0098 };
0099
0100 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3>
0101 struct as_mono_function<PolyFun(A0 , A1 , A2 , A3)>
0102 : as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3), is_poly_function<PolyFun>::value>
0103 {};
0104
0105 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0106 struct poly_function_traits<PolyFun, PolyFun(A0 , A1 , A2 , A3 , A4), mpl::size_t<sizeof(poly_function_t)> >
0107 {
0108 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4> function_type;
0109 typedef typename function_type::result_type result_type;
0110 };
0111
0112 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0113 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4), true>
0114 {
0115 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4> type;
0116 };
0117
0118 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0119 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4), false>
0120 {
0121 typedef PolyFun type;
0122 };
0123
0124 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0125 struct as_mono_function<PolyFun(A0 , A1 , A2 , A3 , A4)>
0126 : as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4), is_poly_function<PolyFun>::value>
0127 {};
0128
0129 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0130 struct poly_function_traits<PolyFun, PolyFun(A0 , A1 , A2 , A3 , A4 , A5), mpl::size_t<sizeof(poly_function_t)> >
0131 {
0132 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4 , const A5> function_type;
0133 typedef typename function_type::result_type result_type;
0134 };
0135
0136 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0137 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5), true>
0138 {
0139 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4 , const A5> type;
0140 };
0141
0142 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0143 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5), false>
0144 {
0145 typedef PolyFun type;
0146 };
0147
0148 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0149 struct as_mono_function<PolyFun(A0 , A1 , A2 , A3 , A4 , A5)>
0150 : as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5), is_poly_function<PolyFun>::value>
0151 {};
0152
0153 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0154 struct poly_function_traits<PolyFun, PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6), mpl::size_t<sizeof(poly_function_t)> >
0155 {
0156 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6> function_type;
0157 typedef typename function_type::result_type result_type;
0158 };
0159
0160 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0161 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6), true>
0162 {
0163 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6> type;
0164 };
0165
0166 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0167 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6), false>
0168 {
0169 typedef PolyFun type;
0170 };
0171
0172 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0173 struct as_mono_function<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
0174 : as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6), is_poly_function<PolyFun>::value>
0175 {};
0176
0177 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0178 struct poly_function_traits<PolyFun, PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7), mpl::size_t<sizeof(poly_function_t)> >
0179 {
0180 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7> function_type;
0181 typedef typename function_type::result_type result_type;
0182 };
0183
0184 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0185 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7), true>
0186 {
0187 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7> type;
0188 };
0189
0190 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0191 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7), false>
0192 {
0193 typedef PolyFun type;
0194 };
0195
0196 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0197 struct as_mono_function<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
0198 : as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7), is_poly_function<PolyFun>::value>
0199 {};
0200
0201 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0202 struct poly_function_traits<PolyFun, PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8), mpl::size_t<sizeof(poly_function_t)> >
0203 {
0204 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8> function_type;
0205 typedef typename function_type::result_type result_type;
0206 };
0207
0208 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0209 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8), true>
0210 {
0211 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8> type;
0212 };
0213
0214 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0215 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8), false>
0216 {
0217 typedef PolyFun type;
0218 };
0219
0220 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0221 struct as_mono_function<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
0222 : as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8), is_poly_function<PolyFun>::value>
0223 {};
0224
0225 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0226 struct poly_function_traits<PolyFun, PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9), mpl::size_t<sizeof(poly_function_t)> >
0227 {
0228 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9> function_type;
0229 typedef typename function_type::result_type result_type;
0230 };
0231
0232 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0233 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9), true>
0234 {
0235 typedef typename PolyFun::template impl<const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9> type;
0236 };
0237
0238 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0239 struct as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9), false>
0240 {
0241 typedef PolyFun type;
0242 };
0243
0244 template<typename PolyFun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0245 struct as_mono_function<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
0246 : as_mono_function_impl<PolyFun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9), is_poly_function<PolyFun>::value>
0247 {};