[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]
00001 /************************************************************************/ 00002 /* */ 00003 /* Copyright 1998-2008 by Ullrich Koethe */ 00004 /* Cognitive Systems Group, University of Hamburg, Germany */ 00005 /* */ 00006 /* This file is part of the VIGRA computer vision library. */ 00007 /* The VIGRA Website is */ 00008 /* http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ */ 00009 /* Please direct questions, bug reports, and contributions to */ 00010 /* ullrich.koethe@iwr.uni-heidelberg.de or */ 00011 /* vigra@informatik.uni-hamburg.de */ 00012 /* */ 00013 /* Permission is hereby granted, free of charge, to any person */ 00014 /* obtaining a copy of this software and associated documentation */ 00015 /* files (the "Software"), to deal in the Software without */ 00016 /* restriction, including without limitation the rights to use, */ 00017 /* copy, modify, merge, publish, distribute, sublicense, and/or */ 00018 /* sell copies of the Software, and to permit persons to whom the */ 00019 /* Software is furnished to do so, subject to the following */ 00020 /* conditions: */ 00021 /* */ 00022 /* The above copyright notice and this permission notice shall be */ 00023 /* included in all copies or substantial portions of the */ 00024 /* Software. */ 00025 /* */ 00026 /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND */ 00027 /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES */ 00028 /* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND */ 00029 /* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT */ 00030 /* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, */ 00031 /* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING */ 00032 /* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR */ 00033 /* OTHER DEALINGS IN THE SOFTWARE. */ 00034 /* */ 00035 /************************************************************************/ 00036 00037 00038 #ifndef VIGRA_PROMOTETRAITS_HXX 00039 #define VIGRA_PROMOTETRAITS_HXX 00040 00041 // this file was autogenerated from promote_traits.hxx.py - DO NOT EDIT 00042 00043 template <> 00044 struct PromoteTraits<bool, bool> : public detail::PromoteType<bool, bool> 00045 { 00046 typedef detail::PromoteType<bool, bool>::Promote Promote; 00047 using detail::PromoteType<bool, bool>::toPromote; 00048 }; 00049 00050 template <> 00051 struct PromoteTraits<bool, signed char> : public detail::PromoteType<bool, signed char> 00052 { 00053 typedef detail::PromoteType<bool, signed char>::Promote Promote; 00054 using detail::PromoteType<bool, signed char>::toPromote; 00055 }; 00056 00057 template <> 00058 struct PromoteTraits<bool, unsigned char> : public detail::PromoteType<bool, unsigned char> 00059 { 00060 typedef detail::PromoteType<bool, unsigned char>::Promote Promote; 00061 using detail::PromoteType<bool, unsigned char>::toPromote; 00062 }; 00063 00064 template <> 00065 struct PromoteTraits<bool, short> : public detail::PromoteType<bool, short> 00066 { 00067 typedef detail::PromoteType<bool, short>::Promote Promote; 00068 using detail::PromoteType<bool, short>::toPromote; 00069 }; 00070 00071 template <> 00072 struct PromoteTraits<bool, unsigned short> : public detail::PromoteType<bool, unsigned short> 00073 { 00074 typedef detail::PromoteType<bool, unsigned short>::Promote Promote; 00075 using detail::PromoteType<bool, unsigned short>::toPromote; 00076 }; 00077 00078 template <> 00079 struct PromoteTraits<bool, int> : public detail::PromoteType<bool, int> 00080 { 00081 typedef detail::PromoteType<bool, int>::Promote Promote; 00082 using detail::PromoteType<bool, int>::toPromote; 00083 }; 00084 00085 template <> 00086 struct PromoteTraits<bool, unsigned int> : public detail::PromoteType<bool, unsigned int> 00087 { 00088 typedef detail::PromoteType<bool, unsigned int>::Promote Promote; 00089 using detail::PromoteType<bool, unsigned int>::toPromote; 00090 }; 00091 00092 template <> 00093 struct PromoteTraits<bool, long> : public detail::PromoteType<bool, long> 00094 { 00095 typedef detail::PromoteType<bool, long>::Promote Promote; 00096 using detail::PromoteType<bool, long>::toPromote; 00097 }; 00098 00099 template <> 00100 struct PromoteTraits<bool, unsigned long> : public detail::PromoteType<bool, unsigned long> 00101 { 00102 typedef detail::PromoteType<bool, unsigned long>::Promote Promote; 00103 using detail::PromoteType<bool, unsigned long>::toPromote; 00104 }; 00105 00106 template <> 00107 struct PromoteTraits<bool, float> : public detail::PromoteType<bool, float> 00108 { 00109 typedef detail::PromoteType<bool, float>::Promote Promote; 00110 using detail::PromoteType<bool, float>::toPromote; 00111 }; 00112 00113 template <> 00114 struct PromoteTraits<bool, double> : public detail::PromoteType<bool, double> 00115 { 00116 typedef detail::PromoteType<bool, double>::Promote Promote; 00117 using detail::PromoteType<bool, double>::toPromote; 00118 }; 00119 00120 template <> 00121 struct PromoteTraits<bool, long double> : public detail::PromoteType<bool, long double> 00122 { 00123 typedef detail::PromoteType<bool, long double>::Promote Promote; 00124 using detail::PromoteType<bool, long double>::toPromote; 00125 }; 00126 00127 #ifdef LLONG_MAX 00128 template <> 00129 struct PromoteTraits<bool, long long> : public detail::PromoteType<bool, long long> 00130 { 00131 typedef detail::PromoteType<bool, long long>::Promote Promote; 00132 using detail::PromoteType<bool, long long>::toPromote; 00133 }; 00134 #endif // LLONG_MAX 00135 00136 #ifdef LLONG_MAX 00137 template <> 00138 struct PromoteTraits<bool, unsigned long long> : public detail::PromoteType<bool, unsigned long long> 00139 { 00140 typedef detail::PromoteType<bool, unsigned long long>::Promote Promote; 00141 using detail::PromoteType<bool, unsigned long long>::toPromote; 00142 }; 00143 #endif // LLONG_MAX 00144 00145 template <> 00146 struct PromoteTraits<signed char, signed char> : public detail::PromoteType<signed char, signed char> 00147 { 00148 typedef detail::PromoteType<signed char, signed char>::Promote Promote; 00149 using detail::PromoteType<signed char, signed char>::toPromote; 00150 }; 00151 00152 template <> 00153 struct PromoteTraits<signed char, bool> : public detail::PromoteType<signed char, bool> 00154 { 00155 typedef detail::PromoteType<signed char, bool>::Promote Promote; 00156 using detail::PromoteType<signed char, bool>::toPromote; 00157 }; 00158 00159 template <> 00160 struct PromoteTraits<signed char, unsigned char> : public detail::PromoteType<signed char, unsigned char> 00161 { 00162 typedef detail::PromoteType<signed char, unsigned char>::Promote Promote; 00163 using detail::PromoteType<signed char, unsigned char>::toPromote; 00164 }; 00165 00166 template <> 00167 struct PromoteTraits<signed char, short> : public detail::PromoteType<signed char, short> 00168 { 00169 typedef detail::PromoteType<signed char, short>::Promote Promote; 00170 using detail::PromoteType<signed char, short>::toPromote; 00171 }; 00172 00173 template <> 00174 struct PromoteTraits<signed char, unsigned short> : public detail::PromoteType<signed char, unsigned short> 00175 { 00176 typedef detail::PromoteType<signed char, unsigned short>::Promote Promote; 00177 using detail::PromoteType<signed char, unsigned short>::toPromote; 00178 }; 00179 00180 template <> 00181 struct PromoteTraits<signed char, int> : public detail::PromoteType<signed char, int> 00182 { 00183 typedef detail::PromoteType<signed char, int>::Promote Promote; 00184 using detail::PromoteType<signed char, int>::toPromote; 00185 }; 00186 00187 template <> 00188 struct PromoteTraits<signed char, unsigned int> : public detail::PromoteType<signed char, unsigned int> 00189 { 00190 typedef detail::PromoteType<signed char, unsigned int>::Promote Promote; 00191 using detail::PromoteType<signed char, unsigned int>::toPromote; 00192 }; 00193 00194 template <> 00195 struct PromoteTraits<signed char, long> : public detail::PromoteType<signed char, long> 00196 { 00197 typedef detail::PromoteType<signed char, long>::Promote Promote; 00198 using detail::PromoteType<signed char, long>::toPromote; 00199 }; 00200 00201 template <> 00202 struct PromoteTraits<signed char, unsigned long> : public detail::PromoteType<signed char, unsigned long> 00203 { 00204 typedef detail::PromoteType<signed char, unsigned long>::Promote Promote; 00205 using detail::PromoteType<signed char, unsigned long>::toPromote; 00206 }; 00207 00208 template <> 00209 struct PromoteTraits<signed char, float> : public detail::PromoteType<signed char, float> 00210 { 00211 typedef detail::PromoteType<signed char, float>::Promote Promote; 00212 using detail::PromoteType<signed char, float>::toPromote; 00213 }; 00214 00215 template <> 00216 struct PromoteTraits<signed char, double> : public detail::PromoteType<signed char, double> 00217 { 00218 typedef detail::PromoteType<signed char, double>::Promote Promote; 00219 using detail::PromoteType<signed char, double>::toPromote; 00220 }; 00221 00222 template <> 00223 struct PromoteTraits<signed char, long double> : public detail::PromoteType<signed char, long double> 00224 { 00225 typedef detail::PromoteType<signed char, long double>::Promote Promote; 00226 using detail::PromoteType<signed char, long double>::toPromote; 00227 }; 00228 00229 #ifdef LLONG_MAX 00230 template <> 00231 struct PromoteTraits<signed char, long long> : public detail::PromoteType<signed char, long long> 00232 { 00233 typedef detail::PromoteType<signed char, long long>::Promote Promote; 00234 using detail::PromoteType<signed char, long long>::toPromote; 00235 }; 00236 #endif // LLONG_MAX 00237 00238 #ifdef LLONG_MAX 00239 template <> 00240 struct PromoteTraits<signed char, unsigned long long> : public detail::PromoteType<signed char, unsigned long long> 00241 { 00242 typedef detail::PromoteType<signed char, unsigned long long>::Promote Promote; 00243 using detail::PromoteType<signed char, unsigned long long>::toPromote; 00244 }; 00245 #endif // LLONG_MAX 00246 00247 template <> 00248 struct PromoteTraits<unsigned char, unsigned char> : public detail::PromoteType<unsigned char, unsigned char> 00249 { 00250 typedef detail::PromoteType<unsigned char, unsigned char>::Promote Promote; 00251 using detail::PromoteType<unsigned char, unsigned char>::toPromote; 00252 }; 00253 00254 template <> 00255 struct PromoteTraits<unsigned char, bool> : public detail::PromoteType<unsigned char, bool> 00256 { 00257 typedef detail::PromoteType<unsigned char, bool>::Promote Promote; 00258 using detail::PromoteType<unsigned char, bool>::toPromote; 00259 }; 00260 00261 template <> 00262 struct PromoteTraits<unsigned char, signed char> : public detail::PromoteType<unsigned char, signed char> 00263 { 00264 typedef detail::PromoteType<unsigned char, signed char>::Promote Promote; 00265 using detail::PromoteType<unsigned char, signed char>::toPromote; 00266 }; 00267 00268 template <> 00269 struct PromoteTraits<unsigned char, short> : public detail::PromoteType<unsigned char, short> 00270 { 00271 typedef detail::PromoteType<unsigned char, short>::Promote Promote; 00272 using detail::PromoteType<unsigned char, short>::toPromote; 00273 }; 00274 00275 template <> 00276 struct PromoteTraits<unsigned char, unsigned short> : public detail::PromoteType<unsigned char, unsigned short> 00277 { 00278 typedef detail::PromoteType<unsigned char, unsigned short>::Promote Promote; 00279 using detail::PromoteType<unsigned char, unsigned short>::toPromote; 00280 }; 00281 00282 template <> 00283 struct PromoteTraits<unsigned char, int> : public detail::PromoteType<unsigned char, int> 00284 { 00285 typedef detail::PromoteType<unsigned char, int>::Promote Promote; 00286 using detail::PromoteType<unsigned char, int>::toPromote; 00287 }; 00288 00289 template <> 00290 struct PromoteTraits<unsigned char, unsigned int> : public detail::PromoteType<unsigned char, unsigned int> 00291 { 00292 typedef detail::PromoteType<unsigned char, unsigned int>::Promote Promote; 00293 using detail::PromoteType<unsigned char, unsigned int>::toPromote; 00294 }; 00295 00296 template <> 00297 struct PromoteTraits<unsigned char, long> : public detail::PromoteType<unsigned char, long> 00298 { 00299 typedef detail::PromoteType<unsigned char, long>::Promote Promote; 00300 using detail::PromoteType<unsigned char, long>::toPromote; 00301 }; 00302 00303 template <> 00304 struct PromoteTraits<unsigned char, unsigned long> : public detail::PromoteType<unsigned char, unsigned long> 00305 { 00306 typedef detail::PromoteType<unsigned char, unsigned long>::Promote Promote; 00307 using detail::PromoteType<unsigned char, unsigned long>::toPromote; 00308 }; 00309 00310 template <> 00311 struct PromoteTraits<unsigned char, float> : public detail::PromoteType<unsigned char, float> 00312 { 00313 typedef detail::PromoteType<unsigned char, float>::Promote Promote; 00314 using detail::PromoteType<unsigned char, float>::toPromote; 00315 }; 00316 00317 template <> 00318 struct PromoteTraits<unsigned char, double> : public detail::PromoteType<unsigned char, double> 00319 { 00320 typedef detail::PromoteType<unsigned char, double>::Promote Promote; 00321 using detail::PromoteType<unsigned char, double>::toPromote; 00322 }; 00323 00324 template <> 00325 struct PromoteTraits<unsigned char, long double> : public detail::PromoteType<unsigned char, long double> 00326 { 00327 typedef detail::PromoteType<unsigned char, long double>::Promote Promote; 00328 using detail::PromoteType<unsigned char, long double>::toPromote; 00329 }; 00330 00331 #ifdef LLONG_MAX 00332 template <> 00333 struct PromoteTraits<unsigned char, long long> : public detail::PromoteType<unsigned char, long long> 00334 { 00335 typedef detail::PromoteType<unsigned char, long long>::Promote Promote; 00336 using detail::PromoteType<unsigned char, long long>::toPromote; 00337 }; 00338 #endif // LLONG_MAX 00339 00340 #ifdef LLONG_MAX 00341 template <> 00342 struct PromoteTraits<unsigned char, unsigned long long> : public detail::PromoteType<unsigned char, unsigned long long> 00343 { 00344 typedef detail::PromoteType<unsigned char, unsigned long long>::Promote Promote; 00345 using detail::PromoteType<unsigned char, unsigned long long>::toPromote; 00346 }; 00347 #endif // LLONG_MAX 00348 00349 template <> 00350 struct PromoteTraits<short, short> : public detail::PromoteType<short, short> 00351 { 00352 typedef detail::PromoteType<short, short>::Promote Promote; 00353 using detail::PromoteType<short, short>::toPromote; 00354 }; 00355 00356 template <> 00357 struct PromoteTraits<short, bool> : public detail::PromoteType<short, bool> 00358 { 00359 typedef detail::PromoteType<short, bool>::Promote Promote; 00360 using detail::PromoteType<short, bool>::toPromote; 00361 }; 00362 00363 template <> 00364 struct PromoteTraits<short, signed char> : public detail::PromoteType<short, signed char> 00365 { 00366 typedef detail::PromoteType<short, signed char>::Promote Promote; 00367 using detail::PromoteType<short, signed char>::toPromote; 00368 }; 00369 00370 template <> 00371 struct PromoteTraits<short, unsigned char> : public detail::PromoteType<short, unsigned char> 00372 { 00373 typedef detail::PromoteType<short, unsigned char>::Promote Promote; 00374 using detail::PromoteType<short, unsigned char>::toPromote; 00375 }; 00376 00377 template <> 00378 struct PromoteTraits<short, unsigned short> : public detail::PromoteType<short, unsigned short> 00379 { 00380 typedef detail::PromoteType<short, unsigned short>::Promote Promote; 00381 using detail::PromoteType<short, unsigned short>::toPromote; 00382 }; 00383 00384 template <> 00385 struct PromoteTraits<short, int> : public detail::PromoteType<short, int> 00386 { 00387 typedef detail::PromoteType<short, int>::Promote Promote; 00388 using detail::PromoteType<short, int>::toPromote; 00389 }; 00390 00391 template <> 00392 struct PromoteTraits<short, unsigned int> : public detail::PromoteType<short, unsigned int> 00393 { 00394 typedef detail::PromoteType<short, unsigned int>::Promote Promote; 00395 using detail::PromoteType<short, unsigned int>::toPromote; 00396 }; 00397 00398 template <> 00399 struct PromoteTraits<short, long> : public detail::PromoteType<short, long> 00400 { 00401 typedef detail::PromoteType<short, long>::Promote Promote; 00402 using detail::PromoteType<short, long>::toPromote; 00403 }; 00404 00405 template <> 00406 struct PromoteTraits<short, unsigned long> : public detail::PromoteType<short, unsigned long> 00407 { 00408 typedef detail::PromoteType<short, unsigned long>::Promote Promote; 00409 using detail::PromoteType<short, unsigned long>::toPromote; 00410 }; 00411 00412 template <> 00413 struct PromoteTraits<short, float> : public detail::PromoteType<short, float> 00414 { 00415 typedef detail::PromoteType<short, float>::Promote Promote; 00416 using detail::PromoteType<short, float>::toPromote; 00417 }; 00418 00419 template <> 00420 struct PromoteTraits<short, double> : public detail::PromoteType<short, double> 00421 { 00422 typedef detail::PromoteType<short, double>::Promote Promote; 00423 using detail::PromoteType<short, double>::toPromote; 00424 }; 00425 00426 template <> 00427 struct PromoteTraits<short, long double> : public detail::PromoteType<short, long double> 00428 { 00429 typedef detail::PromoteType<short, long double>::Promote Promote; 00430 using detail::PromoteType<short, long double>::toPromote; 00431 }; 00432 00433 #ifdef LLONG_MAX 00434 template <> 00435 struct PromoteTraits<short, long long> : public detail::PromoteType<short, long long> 00436 { 00437 typedef detail::PromoteType<short, long long>::Promote Promote; 00438 using detail::PromoteType<short, long long>::toPromote; 00439 }; 00440 #endif // LLONG_MAX 00441 00442 #ifdef LLONG_MAX 00443 template <> 00444 struct PromoteTraits<short, unsigned long long> : public detail::PromoteType<short, unsigned long long> 00445 { 00446 typedef detail::PromoteType<short, unsigned long long>::Promote Promote; 00447 using detail::PromoteType<short, unsigned long long>::toPromote; 00448 }; 00449 #endif // LLONG_MAX 00450 00451 template <> 00452 struct PromoteTraits<unsigned short, unsigned short> : public detail::PromoteType<unsigned short, unsigned short> 00453 { 00454 typedef detail::PromoteType<unsigned short, unsigned short>::Promote Promote; 00455 using detail::PromoteType<unsigned short, unsigned short>::toPromote; 00456 }; 00457 00458 template <> 00459 struct PromoteTraits<unsigned short, bool> : public detail::PromoteType<unsigned short, bool> 00460 { 00461 typedef detail::PromoteType<unsigned short, bool>::Promote Promote; 00462 using detail::PromoteType<unsigned short, bool>::toPromote; 00463 }; 00464 00465 template <> 00466 struct PromoteTraits<unsigned short, signed char> : public detail::PromoteType<unsigned short, signed char> 00467 { 00468 typedef detail::PromoteType<unsigned short, signed char>::Promote Promote; 00469 using detail::PromoteType<unsigned short, signed char>::toPromote; 00470 }; 00471 00472 template <> 00473 struct PromoteTraits<unsigned short, unsigned char> : public detail::PromoteType<unsigned short, unsigned char> 00474 { 00475 typedef detail::PromoteType<unsigned short, unsigned char>::Promote Promote; 00476 using detail::PromoteType<unsigned short, unsigned char>::toPromote; 00477 }; 00478 00479 template <> 00480 struct PromoteTraits<unsigned short, short> : public detail::PromoteType<unsigned short, short> 00481 { 00482 typedef detail::PromoteType<unsigned short, short>::Promote Promote; 00483 using detail::PromoteType<unsigned short, short>::toPromote; 00484 }; 00485 00486 template <> 00487 struct PromoteTraits<unsigned short, int> : public detail::PromoteType<unsigned short, int> 00488 { 00489 typedef detail::PromoteType<unsigned short, int>::Promote Promote; 00490 using detail::PromoteType<unsigned short, int>::toPromote; 00491 }; 00492 00493 template <> 00494 struct PromoteTraits<unsigned short, unsigned int> : public detail::PromoteType<unsigned short, unsigned int> 00495 { 00496 typedef detail::PromoteType<unsigned short, unsigned int>::Promote Promote; 00497 using detail::PromoteType<unsigned short, unsigned int>::toPromote; 00498 }; 00499 00500 template <> 00501 struct PromoteTraits<unsigned short, long> : public detail::PromoteType<unsigned short, long> 00502 { 00503 typedef detail::PromoteType<unsigned short, long>::Promote Promote; 00504 using detail::PromoteType<unsigned short, long>::toPromote; 00505 }; 00506 00507 template <> 00508 struct PromoteTraits<unsigned short, unsigned long> : public detail::PromoteType<unsigned short, unsigned long> 00509 { 00510 typedef detail::PromoteType<unsigned short, unsigned long>::Promote Promote; 00511 using detail::PromoteType<unsigned short, unsigned long>::toPromote; 00512 }; 00513 00514 template <> 00515 struct PromoteTraits<unsigned short, float> : public detail::PromoteType<unsigned short, float> 00516 { 00517 typedef detail::PromoteType<unsigned short, float>::Promote Promote; 00518 using detail::PromoteType<unsigned short, float>::toPromote; 00519 }; 00520 00521 template <> 00522 struct PromoteTraits<unsigned short, double> : public detail::PromoteType<unsigned short, double> 00523 { 00524 typedef detail::PromoteType<unsigned short, double>::Promote Promote; 00525 using detail::PromoteType<unsigned short, double>::toPromote; 00526 }; 00527 00528 template <> 00529 struct PromoteTraits<unsigned short, long double> : public detail::PromoteType<unsigned short, long double> 00530 { 00531 typedef detail::PromoteType<unsigned short, long double>::Promote Promote; 00532 using detail::PromoteType<unsigned short, long double>::toPromote; 00533 }; 00534 00535 #ifdef LLONG_MAX 00536 template <> 00537 struct PromoteTraits<unsigned short, long long> : public detail::PromoteType<unsigned short, long long> 00538 { 00539 typedef detail::PromoteType<unsigned short, long long>::Promote Promote; 00540 using detail::PromoteType<unsigned short, long long>::toPromote; 00541 }; 00542 #endif // LLONG_MAX 00543 00544 #ifdef LLONG_MAX 00545 template <> 00546 struct PromoteTraits<unsigned short, unsigned long long> : public detail::PromoteType<unsigned short, unsigned long long> 00547 { 00548 typedef detail::PromoteType<unsigned short, unsigned long long>::Promote Promote; 00549 using detail::PromoteType<unsigned short, unsigned long long>::toPromote; 00550 }; 00551 #endif // LLONG_MAX 00552 00553 template <> 00554 struct PromoteTraits<int, int> : public detail::PromoteType<int, int> 00555 { 00556 typedef detail::PromoteType<int, int>::Promote Promote; 00557 using detail::PromoteType<int, int>::toPromote; 00558 }; 00559 00560 template <> 00561 struct PromoteTraits<int, bool> : public detail::PromoteType<int, bool> 00562 { 00563 typedef detail::PromoteType<int, bool>::Promote Promote; 00564 using detail::PromoteType<int, bool>::toPromote; 00565 }; 00566 00567 template <> 00568 struct PromoteTraits<int, signed char> : public detail::PromoteType<int, signed char> 00569 { 00570 typedef detail::PromoteType<int, signed char>::Promote Promote; 00571 using detail::PromoteType<int, signed char>::toPromote; 00572 }; 00573 00574 template <> 00575 struct PromoteTraits<int, unsigned char> : public detail::PromoteType<int, unsigned char> 00576 { 00577 typedef detail::PromoteType<int, unsigned char>::Promote Promote; 00578 using detail::PromoteType<int, unsigned char>::toPromote; 00579 }; 00580 00581 template <> 00582 struct PromoteTraits<int, short> : public detail::PromoteType<int, short> 00583 { 00584 typedef detail::PromoteType<int, short>::Promote Promote; 00585 using detail::PromoteType<int, short>::toPromote; 00586 }; 00587 00588 template <> 00589 struct PromoteTraits<int, unsigned short> : public detail::PromoteType<int, unsigned short> 00590 { 00591 typedef detail::PromoteType<int, unsigned short>::Promote Promote; 00592 using detail::PromoteType<int, unsigned short>::toPromote; 00593 }; 00594 00595 template <> 00596 struct PromoteTraits<int, unsigned int> : public detail::PromoteType<int, unsigned int> 00597 { 00598 typedef detail::PromoteType<int, unsigned int>::Promote Promote; 00599 using detail::PromoteType<int, unsigned int>::toPromote; 00600 }; 00601 00602 template <> 00603 struct PromoteTraits<int, long> : public detail::PromoteType<int, long> 00604 { 00605 typedef detail::PromoteType<int, long>::Promote Promote; 00606 using detail::PromoteType<int, long>::toPromote; 00607 }; 00608 00609 template <> 00610 struct PromoteTraits<int, unsigned long> : public detail::PromoteType<int, unsigned long> 00611 { 00612 typedef detail::PromoteType<int, unsigned long>::Promote Promote; 00613 using detail::PromoteType<int, unsigned long>::toPromote; 00614 }; 00615 00616 template <> 00617 struct PromoteTraits<int, float> : public detail::PromoteType<int, float> 00618 { 00619 typedef detail::PromoteType<int, float>::Promote Promote; 00620 using detail::PromoteType<int, float>::toPromote; 00621 }; 00622 00623 template <> 00624 struct PromoteTraits<int, double> : public detail::PromoteType<int, double> 00625 { 00626 typedef detail::PromoteType<int, double>::Promote Promote; 00627 using detail::PromoteType<int, double>::toPromote; 00628 }; 00629 00630 template <> 00631 struct PromoteTraits<int, long double> : public detail::PromoteType<int, long double> 00632 { 00633 typedef detail::PromoteType<int, long double>::Promote Promote; 00634 using detail::PromoteType<int, long double>::toPromote; 00635 }; 00636 00637 #ifdef LLONG_MAX 00638 template <> 00639 struct PromoteTraits<int, long long> : public detail::PromoteType<int, long long> 00640 { 00641 typedef detail::PromoteType<int, long long>::Promote Promote; 00642 using detail::PromoteType<int, long long>::toPromote; 00643 }; 00644 #endif // LLONG_MAX 00645 00646 #ifdef LLONG_MAX 00647 template <> 00648 struct PromoteTraits<int, unsigned long long> : public detail::PromoteType<int, unsigned long long> 00649 { 00650 typedef detail::PromoteType<int, unsigned long long>::Promote Promote; 00651 using detail::PromoteType<int, unsigned long long>::toPromote; 00652 }; 00653 #endif // LLONG_MAX 00654 00655 template <> 00656 struct PromoteTraits<unsigned int, unsigned int> : public detail::PromoteType<unsigned int, unsigned int> 00657 { 00658 typedef detail::PromoteType<unsigned int, unsigned int>::Promote Promote; 00659 using detail::PromoteType<unsigned int, unsigned int>::toPromote; 00660 }; 00661 00662 template <> 00663 struct PromoteTraits<unsigned int, bool> : public detail::PromoteType<unsigned int, bool> 00664 { 00665 typedef detail::PromoteType<unsigned int, bool>::Promote Promote; 00666 using detail::PromoteType<unsigned int, bool>::toPromote; 00667 }; 00668 00669 template <> 00670 struct PromoteTraits<unsigned int, signed char> : public detail::PromoteType<unsigned int, signed char> 00671 { 00672 typedef detail::PromoteType<unsigned int, signed char>::Promote Promote; 00673 using detail::PromoteType<unsigned int, signed char>::toPromote; 00674 }; 00675 00676 template <> 00677 struct PromoteTraits<unsigned int, unsigned char> : public detail::PromoteType<unsigned int, unsigned char> 00678 { 00679 typedef detail::PromoteType<unsigned int, unsigned char>::Promote Promote; 00680 using detail::PromoteType<unsigned int, unsigned char>::toPromote; 00681 }; 00682 00683 template <> 00684 struct PromoteTraits<unsigned int, short> : public detail::PromoteType<unsigned int, short> 00685 { 00686 typedef detail::PromoteType<unsigned int, short>::Promote Promote; 00687 using detail::PromoteType<unsigned int, short>::toPromote; 00688 }; 00689 00690 template <> 00691 struct PromoteTraits<unsigned int, unsigned short> : public detail::PromoteType<unsigned int, unsigned short> 00692 { 00693 typedef detail::PromoteType<unsigned int, unsigned short>::Promote Promote; 00694 using detail::PromoteType<unsigned int, unsigned short>::toPromote; 00695 }; 00696 00697 template <> 00698 struct PromoteTraits<unsigned int, int> : public detail::PromoteType<unsigned int, int> 00699 { 00700 typedef detail::PromoteType<unsigned int, int>::Promote Promote; 00701 using detail::PromoteType<unsigned int, int>::toPromote; 00702 }; 00703 00704 template <> 00705 struct PromoteTraits<unsigned int, long> : public detail::PromoteType<unsigned int, long> 00706 { 00707 typedef detail::PromoteType<unsigned int, long>::Promote Promote; 00708 using detail::PromoteType<unsigned int, long>::toPromote; 00709 }; 00710 00711 template <> 00712 struct PromoteTraits<unsigned int, unsigned long> : public detail::PromoteType<unsigned int, unsigned long> 00713 { 00714 typedef detail::PromoteType<unsigned int, unsigned long>::Promote Promote; 00715 using detail::PromoteType<unsigned int, unsigned long>::toPromote; 00716 }; 00717 00718 template <> 00719 struct PromoteTraits<unsigned int, float> : public detail::PromoteType<unsigned int, float> 00720 { 00721 typedef detail::PromoteType<unsigned int, float>::Promote Promote; 00722 using detail::PromoteType<unsigned int, float>::toPromote; 00723 }; 00724 00725 template <> 00726 struct PromoteTraits<unsigned int, double> : public detail::PromoteType<unsigned int, double> 00727 { 00728 typedef detail::PromoteType<unsigned int, double>::Promote Promote; 00729 using detail::PromoteType<unsigned int, double>::toPromote; 00730 }; 00731 00732 template <> 00733 struct PromoteTraits<unsigned int, long double> : public detail::PromoteType<unsigned int, long double> 00734 { 00735 typedef detail::PromoteType<unsigned int, long double>::Promote Promote; 00736 using detail::PromoteType<unsigned int, long double>::toPromote; 00737 }; 00738 00739 #ifdef LLONG_MAX 00740 template <> 00741 struct PromoteTraits<unsigned int, long long> : public detail::PromoteType<unsigned int, long long> 00742 { 00743 typedef detail::PromoteType<unsigned int, long long>::Promote Promote; 00744 using detail::PromoteType<unsigned int, long long>::toPromote; 00745 }; 00746 #endif // LLONG_MAX 00747 00748 #ifdef LLONG_MAX 00749 template <> 00750 struct PromoteTraits<unsigned int, unsigned long long> : public detail::PromoteType<unsigned int, unsigned long long> 00751 { 00752 typedef detail::PromoteType<unsigned int, unsigned long long>::Promote Promote; 00753 using detail::PromoteType<unsigned int, unsigned long long>::toPromote; 00754 }; 00755 #endif // LLONG_MAX 00756 00757 template <> 00758 struct PromoteTraits<long, long> : public detail::PromoteType<long, long> 00759 { 00760 typedef detail::PromoteType<long, long>::Promote Promote; 00761 using detail::PromoteType<long, long>::toPromote; 00762 }; 00763 00764 template <> 00765 struct PromoteTraits<long, bool> : public detail::PromoteType<long, bool> 00766 { 00767 typedef detail::PromoteType<long, bool>::Promote Promote; 00768 using detail::PromoteType<long, bool>::toPromote; 00769 }; 00770 00771 template <> 00772 struct PromoteTraits<long, signed char> : public detail::PromoteType<long, signed char> 00773 { 00774 typedef detail::PromoteType<long, signed char>::Promote Promote; 00775 using detail::PromoteType<long, signed char>::toPromote; 00776 }; 00777 00778 template <> 00779 struct PromoteTraits<long, unsigned char> : public detail::PromoteType<long, unsigned char> 00780 { 00781 typedef detail::PromoteType<long, unsigned char>::Promote Promote; 00782 using detail::PromoteType<long, unsigned char>::toPromote; 00783 }; 00784 00785 template <> 00786 struct PromoteTraits<long, short> : public detail::PromoteType<long, short> 00787 { 00788 typedef detail::PromoteType<long, short>::Promote Promote; 00789 using detail::PromoteType<long, short>::toPromote; 00790 }; 00791 00792 template <> 00793 struct PromoteTraits<long, unsigned short> : public detail::PromoteType<long, unsigned short> 00794 { 00795 typedef detail::PromoteType<long, unsigned short>::Promote Promote; 00796 using detail::PromoteType<long, unsigned short>::toPromote; 00797 }; 00798 00799 template <> 00800 struct PromoteTraits<long, int> : public detail::PromoteType<long, int> 00801 { 00802 typedef detail::PromoteType<long, int>::Promote Promote; 00803 using detail::PromoteType<long, int>::toPromote; 00804 }; 00805 00806 template <> 00807 struct PromoteTraits<long, unsigned int> : public detail::PromoteType<long, unsigned int> 00808 { 00809 typedef detail::PromoteType<long, unsigned int>::Promote Promote; 00810 using detail::PromoteType<long, unsigned int>::toPromote; 00811 }; 00812 00813 template <> 00814 struct PromoteTraits<long, unsigned long> : public detail::PromoteType<long, unsigned long> 00815 { 00816 typedef detail::PromoteType<long, unsigned long>::Promote Promote; 00817 using detail::PromoteType<long, unsigned long>::toPromote; 00818 }; 00819 00820 template <> 00821 struct PromoteTraits<long, float> : public detail::PromoteType<long, float> 00822 { 00823 typedef detail::PromoteType<long, float>::Promote Promote; 00824 using detail::PromoteType<long, float>::toPromote; 00825 }; 00826 00827 template <> 00828 struct PromoteTraits<long, double> : public detail::PromoteType<long, double> 00829 { 00830 typedef detail::PromoteType<long, double>::Promote Promote; 00831 using detail::PromoteType<long, double>::toPromote; 00832 }; 00833 00834 template <> 00835 struct PromoteTraits<long, long double> : public detail::PromoteType<long, long double> 00836 { 00837 typedef detail::PromoteType<long, long double>::Promote Promote; 00838 using detail::PromoteType<long, long double>::toPromote; 00839 }; 00840 00841 #ifdef LLONG_MAX 00842 template <> 00843 struct PromoteTraits<long, long long> : public detail::PromoteType<long, long long> 00844 { 00845 typedef detail::PromoteType<long, long long>::Promote Promote; 00846 using detail::PromoteType<long, long long>::toPromote; 00847 }; 00848 #endif // LLONG_MAX 00849 00850 #ifdef LLONG_MAX 00851 template <> 00852 struct PromoteTraits<long, unsigned long long> : public detail::PromoteType<long, unsigned long long> 00853 { 00854 typedef detail::PromoteType<long, unsigned long long>::Promote Promote; 00855 using detail::PromoteType<long, unsigned long long>::toPromote; 00856 }; 00857 #endif // LLONG_MAX 00858 00859 template <> 00860 struct PromoteTraits<unsigned long, unsigned long> : public detail::PromoteType<unsigned long, unsigned long> 00861 { 00862 typedef detail::PromoteType<unsigned long, unsigned long>::Promote Promote; 00863 using detail::PromoteType<unsigned long, unsigned long>::toPromote; 00864 }; 00865 00866 template <> 00867 struct PromoteTraits<unsigned long, bool> : public detail::PromoteType<unsigned long, bool> 00868 { 00869 typedef detail::PromoteType<unsigned long, bool>::Promote Promote; 00870 using detail::PromoteType<unsigned long, bool>::toPromote; 00871 }; 00872 00873 template <> 00874 struct PromoteTraits<unsigned long, signed char> : public detail::PromoteType<unsigned long, signed char> 00875 { 00876 typedef detail::PromoteType<unsigned long, signed char>::Promote Promote; 00877 using detail::PromoteType<unsigned long, signed char>::toPromote; 00878 }; 00879 00880 template <> 00881 struct PromoteTraits<unsigned long, unsigned char> : public detail::PromoteType<unsigned long, unsigned char> 00882 { 00883 typedef detail::PromoteType<unsigned long, unsigned char>::Promote Promote; 00884 using detail::PromoteType<unsigned long, unsigned char>::toPromote; 00885 }; 00886 00887 template <> 00888 struct PromoteTraits<unsigned long, short> : public detail::PromoteType<unsigned long, short> 00889 { 00890 typedef detail::PromoteType<unsigned long, short>::Promote Promote; 00891 using detail::PromoteType<unsigned long, short>::toPromote; 00892 }; 00893 00894 template <> 00895 struct PromoteTraits<unsigned long, unsigned short> : public detail::PromoteType<unsigned long, unsigned short> 00896 { 00897 typedef detail::PromoteType<unsigned long, unsigned short>::Promote Promote; 00898 using detail::PromoteType<unsigned long, unsigned short>::toPromote; 00899 }; 00900 00901 template <> 00902 struct PromoteTraits<unsigned long, int> : public detail::PromoteType<unsigned long, int> 00903 { 00904 typedef detail::PromoteType<unsigned long, int>::Promote Promote; 00905 using detail::PromoteType<unsigned long, int>::toPromote; 00906 }; 00907 00908 template <> 00909 struct PromoteTraits<unsigned long, unsigned int> : public detail::PromoteType<unsigned long, unsigned int> 00910 { 00911 typedef detail::PromoteType<unsigned long, unsigned int>::Promote Promote; 00912 using detail::PromoteType<unsigned long, unsigned int>::toPromote; 00913 }; 00914 00915 template <> 00916 struct PromoteTraits<unsigned long, long> : public detail::PromoteType<unsigned long, long> 00917 { 00918 typedef detail::PromoteType<unsigned long, long>::Promote Promote; 00919 using detail::PromoteType<unsigned long, long>::toPromote; 00920 }; 00921 00922 template <> 00923 struct PromoteTraits<unsigned long, float> : public detail::PromoteType<unsigned long, float> 00924 { 00925 typedef detail::PromoteType<unsigned long, float>::Promote Promote; 00926 using detail::PromoteType<unsigned long, float>::toPromote; 00927 }; 00928 00929 template <> 00930 struct PromoteTraits<unsigned long, double> : public detail::PromoteType<unsigned long, double> 00931 { 00932 typedef detail::PromoteType<unsigned long, double>::Promote Promote; 00933 using detail::PromoteType<unsigned long, double>::toPromote; 00934 }; 00935 00936 template <> 00937 struct PromoteTraits<unsigned long, long double> : public detail::PromoteType<unsigned long, long double> 00938 { 00939 typedef detail::PromoteType<unsigned long, long double>::Promote Promote; 00940 using detail::PromoteType<unsigned long, long double>::toPromote; 00941 }; 00942 00943 #ifdef LLONG_MAX 00944 template <> 00945 struct PromoteTraits<unsigned long, long long> : public detail::PromoteType<unsigned long, long long> 00946 { 00947 typedef detail::PromoteType<unsigned long, long long>::Promote Promote; 00948 using detail::PromoteType<unsigned long, long long>::toPromote; 00949 }; 00950 #endif // LLONG_MAX 00951 00952 #ifdef LLONG_MAX 00953 template <> 00954 struct PromoteTraits<unsigned long, unsigned long long> : public detail::PromoteType<unsigned long, unsigned long long> 00955 { 00956 typedef detail::PromoteType<unsigned long, unsigned long long>::Promote Promote; 00957 using detail::PromoteType<unsigned long, unsigned long long>::toPromote; 00958 }; 00959 #endif // LLONG_MAX 00960 00961 template <> 00962 struct PromoteTraits<float, float> : public detail::PromoteType<float, float> 00963 { 00964 typedef detail::PromoteType<float, float>::Promote Promote; 00965 using detail::PromoteType<float, float>::toPromote; 00966 }; 00967 00968 template <> 00969 struct PromoteTraits<float, bool> : public detail::PromoteType<float, bool> 00970 { 00971 typedef detail::PromoteType<float, bool>::Promote Promote; 00972 using detail::PromoteType<float, bool>::toPromote; 00973 }; 00974 00975 template <> 00976 struct PromoteTraits<float, signed char> : public detail::PromoteType<float, signed char> 00977 { 00978 typedef detail::PromoteType<float, signed char>::Promote Promote; 00979 using detail::PromoteType<float, signed char>::toPromote; 00980 }; 00981 00982 template <> 00983 struct PromoteTraits<float, unsigned char> : public detail::PromoteType<float, unsigned char> 00984 { 00985 typedef detail::PromoteType<float, unsigned char>::Promote Promote; 00986 using detail::PromoteType<float, unsigned char>::toPromote; 00987 }; 00988 00989 template <> 00990 struct PromoteTraits<float, short> : public detail::PromoteType<float, short> 00991 { 00992 typedef detail::PromoteType<float, short>::Promote Promote; 00993 using detail::PromoteType<float, short>::toPromote; 00994 }; 00995 00996 template <> 00997 struct PromoteTraits<float, unsigned short> : public detail::PromoteType<float, unsigned short> 00998 { 00999 typedef detail::PromoteType<float, unsigned short>::Promote Promote; 01000 using detail::PromoteType<float, unsigned short>::toPromote; 01001 }; 01002 01003 template <> 01004 struct PromoteTraits<float, int> : public detail::PromoteType<float, int> 01005 { 01006 typedef detail::PromoteType<float, int>::Promote Promote; 01007 using detail::PromoteType<float, int>::toPromote; 01008 }; 01009 01010 template <> 01011 struct PromoteTraits<float, unsigned int> : public detail::PromoteType<float, unsigned int> 01012 { 01013 typedef detail::PromoteType<float, unsigned int>::Promote Promote; 01014 using detail::PromoteType<float, unsigned int>::toPromote; 01015 }; 01016 01017 template <> 01018 struct PromoteTraits<float, long> : public detail::PromoteType<float, long> 01019 { 01020 typedef detail::PromoteType<float, long>::Promote Promote; 01021 using detail::PromoteType<float, long>::toPromote; 01022 }; 01023 01024 template <> 01025 struct PromoteTraits<float, unsigned long> : public detail::PromoteType<float, unsigned long> 01026 { 01027 typedef detail::PromoteType<float, unsigned long>::Promote Promote; 01028 using detail::PromoteType<float, unsigned long>::toPromote; 01029 }; 01030 01031 template <> 01032 struct PromoteTraits<float, double> : public detail::PromoteType<float, double> 01033 { 01034 typedef detail::PromoteType<float, double>::Promote Promote; 01035 using detail::PromoteType<float, double>::toPromote; 01036 }; 01037 01038 template <> 01039 struct PromoteTraits<float, long double> : public detail::PromoteType<float, long double> 01040 { 01041 typedef detail::PromoteType<float, long double>::Promote Promote; 01042 using detail::PromoteType<float, long double>::toPromote; 01043 }; 01044 01045 #ifdef LLONG_MAX 01046 template <> 01047 struct PromoteTraits<float, long long> : public detail::PromoteType<float, long long> 01048 { 01049 typedef detail::PromoteType<float, long long>::Promote Promote; 01050 using detail::PromoteType<float, long long>::toPromote; 01051 }; 01052 #endif // LLONG_MAX 01053 01054 #ifdef LLONG_MAX 01055 template <> 01056 struct PromoteTraits<float, unsigned long long> : public detail::PromoteType<float, unsigned long long> 01057 { 01058 typedef detail::PromoteType<float, unsigned long long>::Promote Promote; 01059 using detail::PromoteType<float, unsigned long long>::toPromote; 01060 }; 01061 #endif // LLONG_MAX 01062 01063 template <> 01064 struct PromoteTraits<double, double> : public detail::PromoteType<double, double> 01065 { 01066 typedef detail::PromoteType<double, double>::Promote Promote; 01067 using detail::PromoteType<double, double>::toPromote; 01068 }; 01069 01070 template <> 01071 struct PromoteTraits<double, bool> : public detail::PromoteType<double, bool> 01072 { 01073 typedef detail::PromoteType<double, bool>::Promote Promote; 01074 using detail::PromoteType<double, bool>::toPromote; 01075 }; 01076 01077 template <> 01078 struct PromoteTraits<double, signed char> : public detail::PromoteType<double, signed char> 01079 { 01080 typedef detail::PromoteType<double, signed char>::Promote Promote; 01081 using detail::PromoteType<double, signed char>::toPromote; 01082 }; 01083 01084 template <> 01085 struct PromoteTraits<double, unsigned char> : public detail::PromoteType<double, unsigned char> 01086 { 01087 typedef detail::PromoteType<double, unsigned char>::Promote Promote; 01088 using detail::PromoteType<double, unsigned char>::toPromote; 01089 }; 01090 01091 template <> 01092 struct PromoteTraits<double, short> : public detail::PromoteType<double, short> 01093 { 01094 typedef detail::PromoteType<double, short>::Promote Promote; 01095 using detail::PromoteType<double, short>::toPromote; 01096 }; 01097 01098 template <> 01099 struct PromoteTraits<double, unsigned short> : public detail::PromoteType<double, unsigned short> 01100 { 01101 typedef detail::PromoteType<double, unsigned short>::Promote Promote; 01102 using detail::PromoteType<double, unsigned short>::toPromote; 01103 }; 01104 01105 template <> 01106 struct PromoteTraits<double, int> : public detail::PromoteType<double, int> 01107 { 01108 typedef detail::PromoteType<double, int>::Promote Promote; 01109 using detail::PromoteType<double, int>::toPromote; 01110 }; 01111 01112 template <> 01113 struct PromoteTraits<double, unsigned int> : public detail::PromoteType<double, unsigned int> 01114 { 01115 typedef detail::PromoteType<double, unsigned int>::Promote Promote; 01116 using detail::PromoteType<double, unsigned int>::toPromote; 01117 }; 01118 01119 template <> 01120 struct PromoteTraits<double, long> : public detail::PromoteType<double, long> 01121 { 01122 typedef detail::PromoteType<double, long>::Promote Promote; 01123 using detail::PromoteType<double, long>::toPromote; 01124 }; 01125 01126 template <> 01127 struct PromoteTraits<double, unsigned long> : public detail::PromoteType<double, unsigned long> 01128 { 01129 typedef detail::PromoteType<double, unsigned long>::Promote Promote; 01130 using detail::PromoteType<double, unsigned long>::toPromote; 01131 }; 01132 01133 template <> 01134 struct PromoteTraits<double, float> : public detail::PromoteType<double, float> 01135 { 01136 typedef detail::PromoteType<double, float>::Promote Promote; 01137 using detail::PromoteType<double, float>::toPromote; 01138 }; 01139 01140 template <> 01141 struct PromoteTraits<double, long double> : public detail::PromoteType<double, long double> 01142 { 01143 typedef detail::PromoteType<double, long double>::Promote Promote; 01144 using detail::PromoteType<double, long double>::toPromote; 01145 }; 01146 01147 #ifdef LLONG_MAX 01148 template <> 01149 struct PromoteTraits<double, long long> : public detail::PromoteType<double, long long> 01150 { 01151 typedef detail::PromoteType<double, long long>::Promote Promote; 01152 using detail::PromoteType<double, long long>::toPromote; 01153 }; 01154 #endif // LLONG_MAX 01155 01156 #ifdef LLONG_MAX 01157 template <> 01158 struct PromoteTraits<double, unsigned long long> : public detail::PromoteType<double, unsigned long long> 01159 { 01160 typedef detail::PromoteType<double, unsigned long long>::Promote Promote; 01161 using detail::PromoteType<double, unsigned long long>::toPromote; 01162 }; 01163 #endif // LLONG_MAX 01164 01165 template <> 01166 struct PromoteTraits<long double, long double> : public detail::PromoteType<long double, long double> 01167 { 01168 typedef detail::PromoteType<long double, long double>::Promote Promote; 01169 using detail::PromoteType<long double, long double>::toPromote; 01170 }; 01171 01172 template <> 01173 struct PromoteTraits<long double, bool> : public detail::PromoteType<long double, bool> 01174 { 01175 typedef detail::PromoteType<long double, bool>::Promote Promote; 01176 using detail::PromoteType<long double, bool>::toPromote; 01177 }; 01178 01179 template <> 01180 struct PromoteTraits<long double, signed char> : public detail::PromoteType<long double, signed char> 01181 { 01182 typedef detail::PromoteType<long double, signed char>::Promote Promote; 01183 using detail::PromoteType<long double, signed char>::toPromote; 01184 }; 01185 01186 template <> 01187 struct PromoteTraits<long double, unsigned char> : public detail::PromoteType<long double, unsigned char> 01188 { 01189 typedef detail::PromoteType<long double, unsigned char>::Promote Promote; 01190 using detail::PromoteType<long double, unsigned char>::toPromote; 01191 }; 01192 01193 template <> 01194 struct PromoteTraits<long double, short> : public detail::PromoteType<long double, short> 01195 { 01196 typedef detail::PromoteType<long double, short>::Promote Promote; 01197 using detail::PromoteType<long double, short>::toPromote; 01198 }; 01199 01200 template <> 01201 struct PromoteTraits<long double, unsigned short> : public detail::PromoteType<long double, unsigned short> 01202 { 01203 typedef detail::PromoteType<long double, unsigned short>::Promote Promote; 01204 using detail::PromoteType<long double, unsigned short>::toPromote; 01205 }; 01206 01207 template <> 01208 struct PromoteTraits<long double, int> : public detail::PromoteType<long double, int> 01209 { 01210 typedef detail::PromoteType<long double, int>::Promote Promote; 01211 using detail::PromoteType<long double, int>::toPromote; 01212 }; 01213 01214 template <> 01215 struct PromoteTraits<long double, unsigned int> : public detail::PromoteType<long double, unsigned int> 01216 { 01217 typedef detail::PromoteType<long double, unsigned int>::Promote Promote; 01218 using detail::PromoteType<long double, unsigned int>::toPromote; 01219 }; 01220 01221 template <> 01222 struct PromoteTraits<long double, long> : public detail::PromoteType<long double, long> 01223 { 01224 typedef detail::PromoteType<long double, long>::Promote Promote; 01225 using detail::PromoteType<long double, long>::toPromote; 01226 }; 01227 01228 template <> 01229 struct PromoteTraits<long double, unsigned long> : public detail::PromoteType<long double, unsigned long> 01230 { 01231 typedef detail::PromoteType<long double, unsigned long>::Promote Promote; 01232 using detail::PromoteType<long double, unsigned long>::toPromote; 01233 }; 01234 01235 template <> 01236 struct PromoteTraits<long double, float> : public detail::PromoteType<long double, float> 01237 { 01238 typedef detail::PromoteType<long double, float>::Promote Promote; 01239 using detail::PromoteType<long double, float>::toPromote; 01240 }; 01241 01242 template <> 01243 struct PromoteTraits<long double, double> : public detail::PromoteType<long double, double> 01244 { 01245 typedef detail::PromoteType<long double, double>::Promote Promote; 01246 using detail::PromoteType<long double, double>::toPromote; 01247 }; 01248 01249 #ifdef LLONG_MAX 01250 template <> 01251 struct PromoteTraits<long double, long long> : public detail::PromoteType<long double, long long> 01252 { 01253 typedef detail::PromoteType<long double, long long>::Promote Promote; 01254 using detail::PromoteType<long double, long long>::toPromote; 01255 }; 01256 #endif // LLONG_MAX 01257 01258 #ifdef LLONG_MAX 01259 template <> 01260 struct PromoteTraits<long double, unsigned long long> : public detail::PromoteType<long double, unsigned long long> 01261 { 01262 typedef detail::PromoteType<long double, unsigned long long>::Promote Promote; 01263 using detail::PromoteType<long double, unsigned long long>::toPromote; 01264 }; 01265 #endif // LLONG_MAX 01266 01267 #ifdef LLONG_MAX 01268 template <> 01269 struct PromoteTraits<long long, long long> : public detail::PromoteType<long long, long long> 01270 { 01271 typedef detail::PromoteType<long long, long long>::Promote Promote; 01272 using detail::PromoteType<long long, long long>::toPromote; 01273 }; 01274 #endif // LLONG_MAX 01275 01276 #ifdef LLONG_MAX 01277 template <> 01278 struct PromoteTraits<long long, bool> : public detail::PromoteType<long long, bool> 01279 { 01280 typedef detail::PromoteType<long long, bool>::Promote Promote; 01281 using detail::PromoteType<long long, bool>::toPromote; 01282 }; 01283 #endif // LLONG_MAX 01284 01285 #ifdef LLONG_MAX 01286 template <> 01287 struct PromoteTraits<long long, signed char> : public detail::PromoteType<long long, signed char> 01288 { 01289 typedef detail::PromoteType<long long, signed char>::Promote Promote; 01290 using detail::PromoteType<long long, signed char>::toPromote; 01291 }; 01292 #endif // LLONG_MAX 01293 01294 #ifdef LLONG_MAX 01295 template <> 01296 struct PromoteTraits<long long, unsigned char> : public detail::PromoteType<long long, unsigned char> 01297 { 01298 typedef detail::PromoteType<long long, unsigned char>::Promote Promote; 01299 using detail::PromoteType<long long, unsigned char>::toPromote; 01300 }; 01301 #endif // LLONG_MAX 01302 01303 #ifdef LLONG_MAX 01304 template <> 01305 struct PromoteTraits<long long, short> : public detail::PromoteType<long long, short> 01306 { 01307 typedef detail::PromoteType<long long, short>::Promote Promote; 01308 using detail::PromoteType<long long, short>::toPromote; 01309 }; 01310 #endif // LLONG_MAX 01311 01312 #ifdef LLONG_MAX 01313 template <> 01314 struct PromoteTraits<long long, unsigned short> : public detail::PromoteType<long long, unsigned short> 01315 { 01316 typedef detail::PromoteType<long long, unsigned short>::Promote Promote; 01317 using detail::PromoteType<long long, unsigned short>::toPromote; 01318 }; 01319 #endif // LLONG_MAX 01320 01321 #ifdef LLONG_MAX 01322 template <> 01323 struct PromoteTraits<long long, int> : public detail::PromoteType<long long, int> 01324 { 01325 typedef detail::PromoteType<long long, int>::Promote Promote; 01326 using detail::PromoteType<long long, int>::toPromote; 01327 }; 01328 #endif // LLONG_MAX 01329 01330 #ifdef LLONG_MAX 01331 template <> 01332 struct PromoteTraits<long long, unsigned int> : public detail::PromoteType<long long, unsigned int> 01333 { 01334 typedef detail::PromoteType<long long, unsigned int>::Promote Promote; 01335 using detail::PromoteType<long long, unsigned int>::toPromote; 01336 }; 01337 #endif // LLONG_MAX 01338 01339 #ifdef LLONG_MAX 01340 template <> 01341 struct PromoteTraits<long long, long> : public detail::PromoteType<long long, long> 01342 { 01343 typedef detail::PromoteType<long long, long>::Promote Promote; 01344 using detail::PromoteType<long long, long>::toPromote; 01345 }; 01346 #endif // LLONG_MAX 01347 01348 #ifdef LLONG_MAX 01349 template <> 01350 struct PromoteTraits<long long, unsigned long> : public detail::PromoteType<long long, unsigned long> 01351 { 01352 typedef detail::PromoteType<long long, unsigned long>::Promote Promote; 01353 using detail::PromoteType<long long, unsigned long>::toPromote; 01354 }; 01355 #endif // LLONG_MAX 01356 01357 #ifdef LLONG_MAX 01358 template <> 01359 struct PromoteTraits<long long, float> : public detail::PromoteType<long long, float> 01360 { 01361 typedef detail::PromoteType<long long, float>::Promote Promote; 01362 using detail::PromoteType<long long, float>::toPromote; 01363 }; 01364 #endif // LLONG_MAX 01365 01366 #ifdef LLONG_MAX 01367 template <> 01368 struct PromoteTraits<long long, double> : public detail::PromoteType<long long, double> 01369 { 01370 typedef detail::PromoteType<long long, double>::Promote Promote; 01371 using detail::PromoteType<long long, double>::toPromote; 01372 }; 01373 #endif // LLONG_MAX 01374 01375 #ifdef LLONG_MAX 01376 template <> 01377 struct PromoteTraits<long long, long double> : public detail::PromoteType<long long, long double> 01378 { 01379 typedef detail::PromoteType<long long, long double>::Promote Promote; 01380 using detail::PromoteType<long long, long double>::toPromote; 01381 }; 01382 #endif // LLONG_MAX 01383 01384 #ifdef LLONG_MAX 01385 template <> 01386 struct PromoteTraits<long long, unsigned long long> : public detail::PromoteType<long long, unsigned long long> 01387 { 01388 typedef detail::PromoteType<long long, unsigned long long>::Promote Promote; 01389 using detail::PromoteType<long long, unsigned long long>::toPromote; 01390 }; 01391 #endif // LLONG_MAX 01392 01393 #ifdef LLONG_MAX 01394 template <> 01395 struct PromoteTraits<unsigned long long, unsigned long long> : public detail::PromoteType<unsigned long long, unsigned long long> 01396 { 01397 typedef detail::PromoteType<unsigned long long, unsigned long long>::Promote Promote; 01398 using detail::PromoteType<unsigned long long, unsigned long long>::toPromote; 01399 }; 01400 #endif // LLONG_MAX 01401 01402 #ifdef LLONG_MAX 01403 template <> 01404 struct PromoteTraits<unsigned long long, bool> : public detail::PromoteType<unsigned long long, bool> 01405 { 01406 typedef detail::PromoteType<unsigned long long, bool>::Promote Promote; 01407 using detail::PromoteType<unsigned long long, bool>::toPromote; 01408 }; 01409 #endif // LLONG_MAX 01410 01411 #ifdef LLONG_MAX 01412 template <> 01413 struct PromoteTraits<unsigned long long, signed char> : public detail::PromoteType<unsigned long long, signed char> 01414 { 01415 typedef detail::PromoteType<unsigned long long, signed char>::Promote Promote; 01416 using detail::PromoteType<unsigned long long, signed char>::toPromote; 01417 }; 01418 #endif // LLONG_MAX 01419 01420 #ifdef LLONG_MAX 01421 template <> 01422 struct PromoteTraits<unsigned long long, unsigned char> : public detail::PromoteType<unsigned long long, unsigned char> 01423 { 01424 typedef detail::PromoteType<unsigned long long, unsigned char>::Promote Promote; 01425 using detail::PromoteType<unsigned long long, unsigned char>::toPromote; 01426 }; 01427 #endif // LLONG_MAX 01428 01429 #ifdef LLONG_MAX 01430 template <> 01431 struct PromoteTraits<unsigned long long, short> : public detail::PromoteType<unsigned long long, short> 01432 { 01433 typedef detail::PromoteType<unsigned long long, short>::Promote Promote; 01434 using detail::PromoteType<unsigned long long, short>::toPromote; 01435 }; 01436 #endif // LLONG_MAX 01437 01438 #ifdef LLONG_MAX 01439 template <> 01440 struct PromoteTraits<unsigned long long, unsigned short> : public detail::PromoteType<unsigned long long, unsigned short> 01441 { 01442 typedef detail::PromoteType<unsigned long long, unsigned short>::Promote Promote; 01443 using detail::PromoteType<unsigned long long, unsigned short>::toPromote; 01444 }; 01445 #endif // LLONG_MAX 01446 01447 #ifdef LLONG_MAX 01448 template <> 01449 struct PromoteTraits<unsigned long long, int> : public detail::PromoteType<unsigned long long, int> 01450 { 01451 typedef detail::PromoteType<unsigned long long, int>::Promote Promote; 01452 using detail::PromoteType<unsigned long long, int>::toPromote; 01453 }; 01454 #endif // LLONG_MAX 01455 01456 #ifdef LLONG_MAX 01457 template <> 01458 struct PromoteTraits<unsigned long long, unsigned int> : public detail::PromoteType<unsigned long long, unsigned int> 01459 { 01460 typedef detail::PromoteType<unsigned long long, unsigned int>::Promote Promote; 01461 using detail::PromoteType<unsigned long long, unsigned int>::toPromote; 01462 }; 01463 #endif // LLONG_MAX 01464 01465 #ifdef LLONG_MAX 01466 template <> 01467 struct PromoteTraits<unsigned long long, long> : public detail::PromoteType<unsigned long long, long> 01468 { 01469 typedef detail::PromoteType<unsigned long long, long>::Promote Promote; 01470 using detail::PromoteType<unsigned long long, long>::toPromote; 01471 }; 01472 #endif // LLONG_MAX 01473 01474 #ifdef LLONG_MAX 01475 template <> 01476 struct PromoteTraits<unsigned long long, unsigned long> : public detail::PromoteType<unsigned long long, unsigned long> 01477 { 01478 typedef detail::PromoteType<unsigned long long, unsigned long>::Promote Promote; 01479 using detail::PromoteType<unsigned long long, unsigned long>::toPromote; 01480 }; 01481 #endif // LLONG_MAX 01482 01483 #ifdef LLONG_MAX 01484 template <> 01485 struct PromoteTraits<unsigned long long, float> : public detail::PromoteType<unsigned long long, float> 01486 { 01487 typedef detail::PromoteType<unsigned long long, float>::Promote Promote; 01488 using detail::PromoteType<unsigned long long, float>::toPromote; 01489 }; 01490 #endif // LLONG_MAX 01491 01492 #ifdef LLONG_MAX 01493 template <> 01494 struct PromoteTraits<unsigned long long, double> : public detail::PromoteType<unsigned long long, double> 01495 { 01496 typedef detail::PromoteType<unsigned long long, double>::Promote Promote; 01497 using detail::PromoteType<unsigned long long, double>::toPromote; 01498 }; 01499 #endif // LLONG_MAX 01500 01501 #ifdef LLONG_MAX 01502 template <> 01503 struct PromoteTraits<unsigned long long, long double> : public detail::PromoteType<unsigned long long, long double> 01504 { 01505 typedef detail::PromoteType<unsigned long long, long double>::Promote Promote; 01506 using detail::PromoteType<unsigned long long, long double>::toPromote; 01507 }; 01508 #endif // LLONG_MAX 01509 01510 #ifdef LLONG_MAX 01511 template <> 01512 struct PromoteTraits<unsigned long long, long long> : public detail::PromoteType<unsigned long long, long long> 01513 { 01514 typedef detail::PromoteType<unsigned long long, long long>::Promote Promote; 01515 using detail::PromoteType<unsigned long long, long long>::toPromote; 01516 }; 01517 #endif // LLONG_MAX 01518 01519 01520 01521 #endif // VIGRA_PROMOTETRAITS_HXX
© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) |
html generated using doxygen and Python
|