[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]

vigra/promote_traits.hxx VIGRA

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

© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de)
Heidelberg Collaboratory for Image Processing, University of Heidelberg, Germany

html generated using doxygen and Python
vigra 1.9.0 (Tue Nov 6 2012)