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