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

promote_traits.hxx
1/************************************************************************/
2/* */
3/* Copyright 1998-2008 by Ullrich Koethe */
4/* */
5/* This file is part of the VIGRA computer vision library. */
6/* The VIGRA Website is */
7/* http://hci.iwr.uni-heidelberg.de/vigra/ */
8/* Please direct questions, bug reports, and contributions to */
9/* ullrich.koethe@iwr.uni-heidelberg.de or */
10/* vigra@informatik.uni-hamburg.de */
11/* */
12/* Permission is hereby granted, free of charge, to any person */
13/* obtaining a copy of this software and associated documentation */
14/* files (the "Software"), to deal in the Software without */
15/* restriction, including without limitation the rights to use, */
16/* copy, modify, merge, publish, distribute, sublicense, and/or */
17/* sell copies of the Software, and to permit persons to whom the */
18/* Software is furnished to do so, subject to the following */
19/* conditions: */
20/* */
21/* The above copyright notice and this permission notice shall be */
22/* included in all copies or substantial portions of the */
23/* Software. */
24/* */
25/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND */
26/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES */
27/* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND */
28/* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT */
29/* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, */
30/* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING */
31/* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR */
32/* OTHER DEALINGS IN THE SOFTWARE. */
33/* */
34/************************************************************************/
35
36
37#ifndef VIGRA_PROMOTETRAITS_HXX
38#define VIGRA_PROMOTETRAITS_HXX
39
40// this file was autogenerated from promote_traits.hxx.py - DO NOT EDIT
41
42template <>
43struct PromoteTraits<bool, bool> : public detail::PromoteType<bool, bool>
44{
45 typedef detail::PromoteType<bool, bool>::Promote Promote;
46 using detail::PromoteType<bool, bool>::toPromote;
47};
48
49template <>
50struct PromoteTraits<bool, signed char> : public detail::PromoteType<bool, signed char>
51{
52 typedef detail::PromoteType<bool, signed char>::Promote Promote;
53 using detail::PromoteType<bool, signed char>::toPromote;
54};
55
56template <>
57struct PromoteTraits<bool, unsigned char> : public detail::PromoteType<bool, unsigned char>
58{
59 typedef detail::PromoteType<bool, unsigned char>::Promote Promote;
60 using detail::PromoteType<bool, unsigned char>::toPromote;
61};
62
63template <>
64struct PromoteTraits<bool, short> : public detail::PromoteType<bool, short>
65{
66 typedef detail::PromoteType<bool, short>::Promote Promote;
67 using detail::PromoteType<bool, short>::toPromote;
68};
69
70template <>
71struct PromoteTraits<bool, unsigned short> : public detail::PromoteType<bool, unsigned short>
72{
73 typedef detail::PromoteType<bool, unsigned short>::Promote Promote;
74 using detail::PromoteType<bool, unsigned short>::toPromote;
75};
76
77template <>
78struct PromoteTraits<bool, int> : public detail::PromoteType<bool, int>
79{
80 typedef detail::PromoteType<bool, int>::Promote Promote;
81 using detail::PromoteType<bool, int>::toPromote;
82};
83
84template <>
85struct PromoteTraits<bool, unsigned int> : public detail::PromoteType<bool, unsigned int>
86{
87 typedef detail::PromoteType<bool, unsigned int>::Promote Promote;
88 using detail::PromoteType<bool, unsigned int>::toPromote;
89};
90
91template <>
92struct PromoteTraits<bool, long> : public detail::PromoteType<bool, long>
93{
94 typedef detail::PromoteType<bool, long>::Promote Promote;
95 using detail::PromoteType<bool, long>::toPromote;
96};
97
98template <>
99struct PromoteTraits<bool, unsigned long> : public detail::PromoteType<bool, unsigned long>
100{
101 typedef detail::PromoteType<bool, unsigned long>::Promote Promote;
102 using detail::PromoteType<bool, unsigned long>::toPromote;
103};
104
105template <>
106struct PromoteTraits<bool, float> : public detail::PromoteType<bool, float>
107{
108 typedef detail::PromoteType<bool, float>::Promote Promote;
109 using detail::PromoteType<bool, float>::toPromote;
110};
111
112template <>
113struct PromoteTraits<bool, double> : public detail::PromoteType<bool, double>
114{
115 typedef detail::PromoteType<bool, double>::Promote Promote;
116 using detail::PromoteType<bool, double>::toPromote;
117};
118
119template <>
120struct PromoteTraits<bool, long double> : public detail::PromoteType<bool, long double>
121{
122 typedef detail::PromoteType<bool, long double>::Promote Promote;
123 using detail::PromoteType<bool, long double>::toPromote;
124};
125
126#ifdef LLONG_MAX
127template <>
128struct PromoteTraits<bool, long long> : public detail::PromoteType<bool, long long>
129{
130 typedef detail::PromoteType<bool, long long>::Promote Promote;
131 using detail::PromoteType<bool, long long>::toPromote;
132};
133#endif // LLONG_MAX
134
135#ifdef LLONG_MAX
136template <>
137struct PromoteTraits<bool, unsigned long long> : public detail::PromoteType<bool, unsigned long long>
138{
139 typedef detail::PromoteType<bool, unsigned long long>::Promote Promote;
140 using detail::PromoteType<bool, unsigned long long>::toPromote;
141};
142#endif // LLONG_MAX
143
144template <>
145struct PromoteTraits<signed char, signed char> : public detail::PromoteType<signed char, signed char>
146{
147 typedef detail::PromoteType<signed char, signed char>::Promote Promote;
148 using detail::PromoteType<signed char, signed char>::toPromote;
149};
150
151template <>
152struct PromoteTraits<signed char, bool> : public detail::PromoteType<signed char, bool>
153{
154 typedef detail::PromoteType<signed char, bool>::Promote Promote;
155 using detail::PromoteType<signed char, bool>::toPromote;
156};
157
158template <>
159struct PromoteTraits<signed char, unsigned char> : public detail::PromoteType<signed char, unsigned char>
160{
161 typedef detail::PromoteType<signed char, unsigned char>::Promote Promote;
162 using detail::PromoteType<signed char, unsigned char>::toPromote;
163};
164
165template <>
166struct PromoteTraits<signed char, short> : public detail::PromoteType<signed char, short>
167{
168 typedef detail::PromoteType<signed char, short>::Promote Promote;
169 using detail::PromoteType<signed char, short>::toPromote;
170};
171
172template <>
173struct PromoteTraits<signed char, unsigned short> : public detail::PromoteType<signed char, unsigned short>
174{
175 typedef detail::PromoteType<signed char, unsigned short>::Promote Promote;
176 using detail::PromoteType<signed char, unsigned short>::toPromote;
177};
178
179template <>
180struct PromoteTraits<signed char, int> : public detail::PromoteType<signed char, int>
181{
182 typedef detail::PromoteType<signed char, int>::Promote Promote;
183 using detail::PromoteType<signed char, int>::toPromote;
184};
185
186template <>
187struct PromoteTraits<signed char, unsigned int> : public detail::PromoteType<signed char, unsigned int>
188{
189 typedef detail::PromoteType<signed char, unsigned int>::Promote Promote;
190 using detail::PromoteType<signed char, unsigned int>::toPromote;
191};
192
193template <>
194struct PromoteTraits<signed char, long> : public detail::PromoteType<signed char, long>
195{
196 typedef detail::PromoteType<signed char, long>::Promote Promote;
197 using detail::PromoteType<signed char, long>::toPromote;
198};
199
200template <>
201struct PromoteTraits<signed char, unsigned long> : public detail::PromoteType<signed char, unsigned long>
202{
203 typedef detail::PromoteType<signed char, unsigned long>::Promote Promote;
204 using detail::PromoteType<signed char, unsigned long>::toPromote;
205};
206
207template <>
208struct PromoteTraits<signed char, float> : public detail::PromoteType<signed char, float>
209{
210 typedef detail::PromoteType<signed char, float>::Promote Promote;
211 using detail::PromoteType<signed char, float>::toPromote;
212};
213
214template <>
215struct PromoteTraits<signed char, double> : public detail::PromoteType<signed char, double>
216{
217 typedef detail::PromoteType<signed char, double>::Promote Promote;
218 using detail::PromoteType<signed char, double>::toPromote;
219};
220
221template <>
222struct PromoteTraits<signed char, long double> : public detail::PromoteType<signed char, long double>
223{
224 typedef detail::PromoteType<signed char, long double>::Promote Promote;
225 using detail::PromoteType<signed char, long double>::toPromote;
226};
227
228#ifdef LLONG_MAX
229template <>
230struct PromoteTraits<signed char, long long> : public detail::PromoteType<signed char, long long>
231{
232 typedef detail::PromoteType<signed char, long long>::Promote Promote;
233 using detail::PromoteType<signed char, long long>::toPromote;
234};
235#endif // LLONG_MAX
236
237#ifdef LLONG_MAX
238template <>
239struct PromoteTraits<signed char, unsigned long long> : public detail::PromoteType<signed char, unsigned long long>
240{
241 typedef detail::PromoteType<signed char, unsigned long long>::Promote Promote;
242 using detail::PromoteType<signed char, unsigned long long>::toPromote;
243};
244#endif // LLONG_MAX
245
246template <>
247struct PromoteTraits<unsigned char, unsigned char> : public detail::PromoteType<unsigned char, unsigned char>
248{
249 typedef detail::PromoteType<unsigned char, unsigned char>::Promote Promote;
250 using detail::PromoteType<unsigned char, unsigned char>::toPromote;
251};
252
253template <>
254struct PromoteTraits<unsigned char, bool> : public detail::PromoteType<unsigned char, bool>
255{
256 typedef detail::PromoteType<unsigned char, bool>::Promote Promote;
257 using detail::PromoteType<unsigned char, bool>::toPromote;
258};
259
260template <>
261struct PromoteTraits<unsigned char, signed char> : public detail::PromoteType<unsigned char, signed char>
262{
263 typedef detail::PromoteType<unsigned char, signed char>::Promote Promote;
264 using detail::PromoteType<unsigned char, signed char>::toPromote;
265};
266
267template <>
268struct PromoteTraits<unsigned char, short> : public detail::PromoteType<unsigned char, short>
269{
270 typedef detail::PromoteType<unsigned char, short>::Promote Promote;
271 using detail::PromoteType<unsigned char, short>::toPromote;
272};
273
274template <>
275struct PromoteTraits<unsigned char, unsigned short> : public detail::PromoteType<unsigned char, unsigned short>
276{
277 typedef detail::PromoteType<unsigned char, unsigned short>::Promote Promote;
278 using detail::PromoteType<unsigned char, unsigned short>::toPromote;
279};
280
281template <>
282struct PromoteTraits<unsigned char, int> : public detail::PromoteType<unsigned char, int>
283{
284 typedef detail::PromoteType<unsigned char, int>::Promote Promote;
285 using detail::PromoteType<unsigned char, int>::toPromote;
286};
287
288template <>
289struct PromoteTraits<unsigned char, unsigned int> : public detail::PromoteType<unsigned char, unsigned int>
290{
291 typedef detail::PromoteType<unsigned char, unsigned int>::Promote Promote;
292 using detail::PromoteType<unsigned char, unsigned int>::toPromote;
293};
294
295template <>
296struct PromoteTraits<unsigned char, long> : public detail::PromoteType<unsigned char, long>
297{
298 typedef detail::PromoteType<unsigned char, long>::Promote Promote;
299 using detail::PromoteType<unsigned char, long>::toPromote;
300};
301
302template <>
303struct PromoteTraits<unsigned char, unsigned long> : public detail::PromoteType<unsigned char, unsigned long>
304{
305 typedef detail::PromoteType<unsigned char, unsigned long>::Promote Promote;
306 using detail::PromoteType<unsigned char, unsigned long>::toPromote;
307};
308
309template <>
310struct PromoteTraits<unsigned char, float> : public detail::PromoteType<unsigned char, float>
311{
312 typedef detail::PromoteType<unsigned char, float>::Promote Promote;
313 using detail::PromoteType<unsigned char, float>::toPromote;
314};
315
316template <>
317struct PromoteTraits<unsigned char, double> : public detail::PromoteType<unsigned char, double>
318{
319 typedef detail::PromoteType<unsigned char, double>::Promote Promote;
320 using detail::PromoteType<unsigned char, double>::toPromote;
321};
322
323template <>
324struct PromoteTraits<unsigned char, long double> : public detail::PromoteType<unsigned char, long double>
325{
326 typedef detail::PromoteType<unsigned char, long double>::Promote Promote;
327 using detail::PromoteType<unsigned char, long double>::toPromote;
328};
329
330#ifdef LLONG_MAX
331template <>
332struct PromoteTraits<unsigned char, long long> : public detail::PromoteType<unsigned char, long long>
333{
334 typedef detail::PromoteType<unsigned char, long long>::Promote Promote;
335 using detail::PromoteType<unsigned char, long long>::toPromote;
336};
337#endif // LLONG_MAX
338
339#ifdef LLONG_MAX
340template <>
341struct PromoteTraits<unsigned char, unsigned long long> : public detail::PromoteType<unsigned char, unsigned long long>
342{
343 typedef detail::PromoteType<unsigned char, unsigned long long>::Promote Promote;
344 using detail::PromoteType<unsigned char, unsigned long long>::toPromote;
345};
346#endif // LLONG_MAX
347
348template <>
349struct PromoteTraits<short, short> : public detail::PromoteType<short, short>
350{
351 typedef detail::PromoteType<short, short>::Promote Promote;
352 using detail::PromoteType<short, short>::toPromote;
353};
354
355template <>
356struct PromoteTraits<short, bool> : public detail::PromoteType<short, bool>
357{
358 typedef detail::PromoteType<short, bool>::Promote Promote;
359 using detail::PromoteType<short, bool>::toPromote;
360};
361
362template <>
363struct PromoteTraits<short, signed char> : public detail::PromoteType<short, signed char>
364{
365 typedef detail::PromoteType<short, signed char>::Promote Promote;
366 using detail::PromoteType<short, signed char>::toPromote;
367};
368
369template <>
370struct PromoteTraits<short, unsigned char> : public detail::PromoteType<short, unsigned char>
371{
372 typedef detail::PromoteType<short, unsigned char>::Promote Promote;
373 using detail::PromoteType<short, unsigned char>::toPromote;
374};
375
376template <>
377struct PromoteTraits<short, unsigned short> : public detail::PromoteType<short, unsigned short>
378{
379 typedef detail::PromoteType<short, unsigned short>::Promote Promote;
380 using detail::PromoteType<short, unsigned short>::toPromote;
381};
382
383template <>
384struct PromoteTraits<short, int> : public detail::PromoteType<short, int>
385{
386 typedef detail::PromoteType<short, int>::Promote Promote;
387 using detail::PromoteType<short, int>::toPromote;
388};
389
390template <>
391struct PromoteTraits<short, unsigned int> : public detail::PromoteType<short, unsigned int>
392{
393 typedef detail::PromoteType<short, unsigned int>::Promote Promote;
394 using detail::PromoteType<short, unsigned int>::toPromote;
395};
396
397template <>
398struct PromoteTraits<short, long> : public detail::PromoteType<short, long>
399{
400 typedef detail::PromoteType<short, long>::Promote Promote;
401 using detail::PromoteType<short, long>::toPromote;
402};
403
404template <>
405struct PromoteTraits<short, unsigned long> : public detail::PromoteType<short, unsigned long>
406{
407 typedef detail::PromoteType<short, unsigned long>::Promote Promote;
408 using detail::PromoteType<short, unsigned long>::toPromote;
409};
410
411template <>
412struct PromoteTraits<short, float> : public detail::PromoteType<short, float>
413{
414 typedef detail::PromoteType<short, float>::Promote Promote;
415 using detail::PromoteType<short, float>::toPromote;
416};
417
418template <>
419struct PromoteTraits<short, double> : public detail::PromoteType<short, double>
420{
421 typedef detail::PromoteType<short, double>::Promote Promote;
422 using detail::PromoteType<short, double>::toPromote;
423};
424
425template <>
426struct PromoteTraits<short, long double> : public detail::PromoteType<short, long double>
427{
428 typedef detail::PromoteType<short, long double>::Promote Promote;
429 using detail::PromoteType<short, long double>::toPromote;
430};
431
432#ifdef LLONG_MAX
433template <>
434struct PromoteTraits<short, long long> : public detail::PromoteType<short, long long>
435{
436 typedef detail::PromoteType<short, long long>::Promote Promote;
437 using detail::PromoteType<short, long long>::toPromote;
438};
439#endif // LLONG_MAX
440
441#ifdef LLONG_MAX
442template <>
443struct PromoteTraits<short, unsigned long long> : public detail::PromoteType<short, unsigned long long>
444{
445 typedef detail::PromoteType<short, unsigned long long>::Promote Promote;
446 using detail::PromoteType<short, unsigned long long>::toPromote;
447};
448#endif // LLONG_MAX
449
450template <>
451struct PromoteTraits<unsigned short, unsigned short> : public detail::PromoteType<unsigned short, unsigned short>
452{
453 typedef detail::PromoteType<unsigned short, unsigned short>::Promote Promote;
454 using detail::PromoteType<unsigned short, unsigned short>::toPromote;
455};
456
457template <>
458struct PromoteTraits<unsigned short, bool> : public detail::PromoteType<unsigned short, bool>
459{
460 typedef detail::PromoteType<unsigned short, bool>::Promote Promote;
461 using detail::PromoteType<unsigned short, bool>::toPromote;
462};
463
464template <>
465struct PromoteTraits<unsigned short, signed char> : public detail::PromoteType<unsigned short, signed char>
466{
467 typedef detail::PromoteType<unsigned short, signed char>::Promote Promote;
468 using detail::PromoteType<unsigned short, signed char>::toPromote;
469};
470
471template <>
472struct PromoteTraits<unsigned short, unsigned char> : public detail::PromoteType<unsigned short, unsigned char>
473{
474 typedef detail::PromoteType<unsigned short, unsigned char>::Promote Promote;
475 using detail::PromoteType<unsigned short, unsigned char>::toPromote;
476};
477
478template <>
479struct PromoteTraits<unsigned short, short> : public detail::PromoteType<unsigned short, short>
480{
481 typedef detail::PromoteType<unsigned short, short>::Promote Promote;
482 using detail::PromoteType<unsigned short, short>::toPromote;
483};
484
485template <>
486struct PromoteTraits<unsigned short, int> : public detail::PromoteType<unsigned short, int>
487{
488 typedef detail::PromoteType<unsigned short, int>::Promote Promote;
489 using detail::PromoteType<unsigned short, int>::toPromote;
490};
491
492template <>
493struct PromoteTraits<unsigned short, unsigned int> : public detail::PromoteType<unsigned short, unsigned int>
494{
495 typedef detail::PromoteType<unsigned short, unsigned int>::Promote Promote;
496 using detail::PromoteType<unsigned short, unsigned int>::toPromote;
497};
498
499template <>
500struct PromoteTraits<unsigned short, long> : public detail::PromoteType<unsigned short, long>
501{
502 typedef detail::PromoteType<unsigned short, long>::Promote Promote;
503 using detail::PromoteType<unsigned short, long>::toPromote;
504};
505
506template <>
507struct PromoteTraits<unsigned short, unsigned long> : public detail::PromoteType<unsigned short, unsigned long>
508{
509 typedef detail::PromoteType<unsigned short, unsigned long>::Promote Promote;
510 using detail::PromoteType<unsigned short, unsigned long>::toPromote;
511};
512
513template <>
514struct PromoteTraits<unsigned short, float> : public detail::PromoteType<unsigned short, float>
515{
516 typedef detail::PromoteType<unsigned short, float>::Promote Promote;
517 using detail::PromoteType<unsigned short, float>::toPromote;
518};
519
520template <>
521struct PromoteTraits<unsigned short, double> : public detail::PromoteType<unsigned short, double>
522{
523 typedef detail::PromoteType<unsigned short, double>::Promote Promote;
524 using detail::PromoteType<unsigned short, double>::toPromote;
525};
526
527template <>
528struct PromoteTraits<unsigned short, long double> : public detail::PromoteType<unsigned short, long double>
529{
530 typedef detail::PromoteType<unsigned short, long double>::Promote Promote;
531 using detail::PromoteType<unsigned short, long double>::toPromote;
532};
533
534#ifdef LLONG_MAX
535template <>
536struct PromoteTraits<unsigned short, long long> : public detail::PromoteType<unsigned short, long long>
537{
538 typedef detail::PromoteType<unsigned short, long long>::Promote Promote;
539 using detail::PromoteType<unsigned short, long long>::toPromote;
540};
541#endif // LLONG_MAX
542
543#ifdef LLONG_MAX
544template <>
545struct PromoteTraits<unsigned short, unsigned long long> : public detail::PromoteType<unsigned short, unsigned long long>
546{
547 typedef detail::PromoteType<unsigned short, unsigned long long>::Promote Promote;
548 using detail::PromoteType<unsigned short, unsigned long long>::toPromote;
549};
550#endif // LLONG_MAX
551
552template <>
553struct PromoteTraits<int, int> : public detail::PromoteType<int, int>
554{
555 typedef detail::PromoteType<int, int>::Promote Promote;
556 using detail::PromoteType<int, int>::toPromote;
557};
558
559template <>
560struct PromoteTraits<int, bool> : public detail::PromoteType<int, bool>
561{
562 typedef detail::PromoteType<int, bool>::Promote Promote;
563 using detail::PromoteType<int, bool>::toPromote;
564};
565
566template <>
567struct PromoteTraits<int, signed char> : public detail::PromoteType<int, signed char>
568{
569 typedef detail::PromoteType<int, signed char>::Promote Promote;
570 using detail::PromoteType<int, signed char>::toPromote;
571};
572
573template <>
574struct PromoteTraits<int, unsigned char> : public detail::PromoteType<int, unsigned char>
575{
576 typedef detail::PromoteType<int, unsigned char>::Promote Promote;
577 using detail::PromoteType<int, unsigned char>::toPromote;
578};
579
580template <>
581struct PromoteTraits<int, short> : public detail::PromoteType<int, short>
582{
583 typedef detail::PromoteType<int, short>::Promote Promote;
584 using detail::PromoteType<int, short>::toPromote;
585};
586
587template <>
588struct PromoteTraits<int, unsigned short> : public detail::PromoteType<int, unsigned short>
589{
590 typedef detail::PromoteType<int, unsigned short>::Promote Promote;
591 using detail::PromoteType<int, unsigned short>::toPromote;
592};
593
594template <>
595struct PromoteTraits<int, unsigned int> : public detail::PromoteType<int, unsigned int>
596{
597 typedef detail::PromoteType<int, unsigned int>::Promote Promote;
598 using detail::PromoteType<int, unsigned int>::toPromote;
599};
600
601template <>
602struct PromoteTraits<int, long> : public detail::PromoteType<int, long>
603{
604 typedef detail::PromoteType<int, long>::Promote Promote;
605 using detail::PromoteType<int, long>::toPromote;
606};
607
608template <>
609struct PromoteTraits<int, unsigned long> : public detail::PromoteType<int, unsigned long>
610{
611 typedef detail::PromoteType<int, unsigned long>::Promote Promote;
612 using detail::PromoteType<int, unsigned long>::toPromote;
613};
614
615template <>
616struct PromoteTraits<int, float> : public detail::PromoteType<int, float>
617{
618 typedef detail::PromoteType<int, float>::Promote Promote;
619 using detail::PromoteType<int, float>::toPromote;
620};
621
622template <>
623struct PromoteTraits<int, double> : public detail::PromoteType<int, double>
624{
625 typedef detail::PromoteType<int, double>::Promote Promote;
626 using detail::PromoteType<int, double>::toPromote;
627};
628
629template <>
630struct PromoteTraits<int, long double> : public detail::PromoteType<int, long double>
631{
632 typedef detail::PromoteType<int, long double>::Promote Promote;
633 using detail::PromoteType<int, long double>::toPromote;
634};
635
636#ifdef LLONG_MAX
637template <>
638struct PromoteTraits<int, long long> : public detail::PromoteType<int, long long>
639{
640 typedef detail::PromoteType<int, long long>::Promote Promote;
641 using detail::PromoteType<int, long long>::toPromote;
642};
643#endif // LLONG_MAX
644
645#ifdef LLONG_MAX
646template <>
647struct PromoteTraits<int, unsigned long long> : public detail::PromoteType<int, unsigned long long>
648{
649 typedef detail::PromoteType<int, unsigned long long>::Promote Promote;
650 using detail::PromoteType<int, unsigned long long>::toPromote;
651};
652#endif // LLONG_MAX
653
654template <>
655struct PromoteTraits<unsigned int, unsigned int> : public detail::PromoteType<unsigned int, unsigned int>
656{
657 typedef detail::PromoteType<unsigned int, unsigned int>::Promote Promote;
658 using detail::PromoteType<unsigned int, unsigned int>::toPromote;
659};
660
661template <>
662struct PromoteTraits<unsigned int, bool> : public detail::PromoteType<unsigned int, bool>
663{
664 typedef detail::PromoteType<unsigned int, bool>::Promote Promote;
665 using detail::PromoteType<unsigned int, bool>::toPromote;
666};
667
668template <>
669struct PromoteTraits<unsigned int, signed char> : public detail::PromoteType<unsigned int, signed char>
670{
671 typedef detail::PromoteType<unsigned int, signed char>::Promote Promote;
672 using detail::PromoteType<unsigned int, signed char>::toPromote;
673};
674
675template <>
676struct PromoteTraits<unsigned int, unsigned char> : public detail::PromoteType<unsigned int, unsigned char>
677{
678 typedef detail::PromoteType<unsigned int, unsigned char>::Promote Promote;
679 using detail::PromoteType<unsigned int, unsigned char>::toPromote;
680};
681
682template <>
683struct PromoteTraits<unsigned int, short> : public detail::PromoteType<unsigned int, short>
684{
685 typedef detail::PromoteType<unsigned int, short>::Promote Promote;
686 using detail::PromoteType<unsigned int, short>::toPromote;
687};
688
689template <>
690struct PromoteTraits<unsigned int, unsigned short> : public detail::PromoteType<unsigned int, unsigned short>
691{
692 typedef detail::PromoteType<unsigned int, unsigned short>::Promote Promote;
693 using detail::PromoteType<unsigned int, unsigned short>::toPromote;
694};
695
696template <>
697struct PromoteTraits<unsigned int, int> : public detail::PromoteType<unsigned int, int>
698{
699 typedef detail::PromoteType<unsigned int, int>::Promote Promote;
700 using detail::PromoteType<unsigned int, int>::toPromote;
701};
702
703template <>
704struct PromoteTraits<unsigned int, long> : public detail::PromoteType<unsigned int, long>
705{
706 typedef detail::PromoteType<unsigned int, long>::Promote Promote;
707 using detail::PromoteType<unsigned int, long>::toPromote;
708};
709
710template <>
711struct PromoteTraits<unsigned int, unsigned long> : public detail::PromoteType<unsigned int, unsigned long>
712{
713 typedef detail::PromoteType<unsigned int, unsigned long>::Promote Promote;
714 using detail::PromoteType<unsigned int, unsigned long>::toPromote;
715};
716
717template <>
718struct PromoteTraits<unsigned int, float> : public detail::PromoteType<unsigned int, float>
719{
720 typedef detail::PromoteType<unsigned int, float>::Promote Promote;
721 using detail::PromoteType<unsigned int, float>::toPromote;
722};
723
724template <>
725struct PromoteTraits<unsigned int, double> : public detail::PromoteType<unsigned int, double>
726{
727 typedef detail::PromoteType<unsigned int, double>::Promote Promote;
728 using detail::PromoteType<unsigned int, double>::toPromote;
729};
730
731template <>
732struct PromoteTraits<unsigned int, long double> : public detail::PromoteType<unsigned int, long double>
733{
734 typedef detail::PromoteType<unsigned int, long double>::Promote Promote;
735 using detail::PromoteType<unsigned int, long double>::toPromote;
736};
737
738#ifdef LLONG_MAX
739template <>
740struct PromoteTraits<unsigned int, long long> : public detail::PromoteType<unsigned int, long long>
741{
742 typedef detail::PromoteType<unsigned int, long long>::Promote Promote;
743 using detail::PromoteType<unsigned int, long long>::toPromote;
744};
745#endif // LLONG_MAX
746
747#ifdef LLONG_MAX
748template <>
749struct PromoteTraits<unsigned int, unsigned long long> : public detail::PromoteType<unsigned int, unsigned long long>
750{
751 typedef detail::PromoteType<unsigned int, unsigned long long>::Promote Promote;
752 using detail::PromoteType<unsigned int, unsigned long long>::toPromote;
753};
754#endif // LLONG_MAX
755
756template <>
757struct PromoteTraits<long, long> : public detail::PromoteType<long, long>
758{
759 typedef detail::PromoteType<long, long>::Promote Promote;
760 using detail::PromoteType<long, long>::toPromote;
761};
762
763template <>
764struct PromoteTraits<long, bool> : public detail::PromoteType<long, bool>
765{
766 typedef detail::PromoteType<long, bool>::Promote Promote;
767 using detail::PromoteType<long, bool>::toPromote;
768};
769
770template <>
771struct PromoteTraits<long, signed char> : public detail::PromoteType<long, signed char>
772{
773 typedef detail::PromoteType<long, signed char>::Promote Promote;
774 using detail::PromoteType<long, signed char>::toPromote;
775};
776
777template <>
778struct PromoteTraits<long, unsigned char> : public detail::PromoteType<long, unsigned char>
779{
780 typedef detail::PromoteType<long, unsigned char>::Promote Promote;
781 using detail::PromoteType<long, unsigned char>::toPromote;
782};
783
784template <>
785struct PromoteTraits<long, short> : public detail::PromoteType<long, short>
786{
787 typedef detail::PromoteType<long, short>::Promote Promote;
788 using detail::PromoteType<long, short>::toPromote;
789};
790
791template <>
792struct PromoteTraits<long, unsigned short> : public detail::PromoteType<long, unsigned short>
793{
794 typedef detail::PromoteType<long, unsigned short>::Promote Promote;
795 using detail::PromoteType<long, unsigned short>::toPromote;
796};
797
798template <>
799struct PromoteTraits<long, int> : public detail::PromoteType<long, int>
800{
801 typedef detail::PromoteType<long, int>::Promote Promote;
802 using detail::PromoteType<long, int>::toPromote;
803};
804
805template <>
806struct PromoteTraits<long, unsigned int> : public detail::PromoteType<long, unsigned int>
807{
808 typedef detail::PromoteType<long, unsigned int>::Promote Promote;
809 using detail::PromoteType<long, unsigned int>::toPromote;
810};
811
812template <>
813struct PromoteTraits<long, unsigned long> : public detail::PromoteType<long, unsigned long>
814{
815 typedef detail::PromoteType<long, unsigned long>::Promote Promote;
816 using detail::PromoteType<long, unsigned long>::toPromote;
817};
818
819template <>
820struct PromoteTraits<long, float> : public detail::PromoteType<long, float>
821{
822 typedef detail::PromoteType<long, float>::Promote Promote;
823 using detail::PromoteType<long, float>::toPromote;
824};
825
826template <>
827struct PromoteTraits<long, double> : public detail::PromoteType<long, double>
828{
829 typedef detail::PromoteType<long, double>::Promote Promote;
830 using detail::PromoteType<long, double>::toPromote;
831};
832
833template <>
834struct PromoteTraits<long, long double> : public detail::PromoteType<long, long double>
835{
836 typedef detail::PromoteType<long, long double>::Promote Promote;
837 using detail::PromoteType<long, long double>::toPromote;
838};
839
840#ifdef LLONG_MAX
841template <>
842struct PromoteTraits<long, long long> : public detail::PromoteType<long, long long>
843{
844 typedef detail::PromoteType<long, long long>::Promote Promote;
845 using detail::PromoteType<long, long long>::toPromote;
846};
847#endif // LLONG_MAX
848
849#ifdef LLONG_MAX
850template <>
851struct PromoteTraits<long, unsigned long long> : public detail::PromoteType<long, unsigned long long>
852{
853 typedef detail::PromoteType<long, unsigned long long>::Promote Promote;
854 using detail::PromoteType<long, unsigned long long>::toPromote;
855};
856#endif // LLONG_MAX
857
858template <>
859struct PromoteTraits<unsigned long, unsigned long> : public detail::PromoteType<unsigned long, unsigned long>
860{
861 typedef detail::PromoteType<unsigned long, unsigned long>::Promote Promote;
862 using detail::PromoteType<unsigned long, unsigned long>::toPromote;
863};
864
865template <>
866struct PromoteTraits<unsigned long, bool> : public detail::PromoteType<unsigned long, bool>
867{
868 typedef detail::PromoteType<unsigned long, bool>::Promote Promote;
869 using detail::PromoteType<unsigned long, bool>::toPromote;
870};
871
872template <>
873struct PromoteTraits<unsigned long, signed char> : public detail::PromoteType<unsigned long, signed char>
874{
875 typedef detail::PromoteType<unsigned long, signed char>::Promote Promote;
876 using detail::PromoteType<unsigned long, signed char>::toPromote;
877};
878
879template <>
880struct PromoteTraits<unsigned long, unsigned char> : public detail::PromoteType<unsigned long, unsigned char>
881{
882 typedef detail::PromoteType<unsigned long, unsigned char>::Promote Promote;
883 using detail::PromoteType<unsigned long, unsigned char>::toPromote;
884};
885
886template <>
887struct PromoteTraits<unsigned long, short> : public detail::PromoteType<unsigned long, short>
888{
889 typedef detail::PromoteType<unsigned long, short>::Promote Promote;
890 using detail::PromoteType<unsigned long, short>::toPromote;
891};
892
893template <>
894struct PromoteTraits<unsigned long, unsigned short> : public detail::PromoteType<unsigned long, unsigned short>
895{
896 typedef detail::PromoteType<unsigned long, unsigned short>::Promote Promote;
897 using detail::PromoteType<unsigned long, unsigned short>::toPromote;
898};
899
900template <>
901struct PromoteTraits<unsigned long, int> : public detail::PromoteType<unsigned long, int>
902{
903 typedef detail::PromoteType<unsigned long, int>::Promote Promote;
904 using detail::PromoteType<unsigned long, int>::toPromote;
905};
906
907template <>
908struct PromoteTraits<unsigned long, unsigned int> : public detail::PromoteType<unsigned long, unsigned int>
909{
910 typedef detail::PromoteType<unsigned long, unsigned int>::Promote Promote;
911 using detail::PromoteType<unsigned long, unsigned int>::toPromote;
912};
913
914template <>
915struct PromoteTraits<unsigned long, long> : public detail::PromoteType<unsigned long, long>
916{
917 typedef detail::PromoteType<unsigned long, long>::Promote Promote;
918 using detail::PromoteType<unsigned long, long>::toPromote;
919};
920
921template <>
922struct PromoteTraits<unsigned long, float> : public detail::PromoteType<unsigned long, float>
923{
924 typedef detail::PromoteType<unsigned long, float>::Promote Promote;
925 using detail::PromoteType<unsigned long, float>::toPromote;
926};
927
928template <>
929struct PromoteTraits<unsigned long, double> : public detail::PromoteType<unsigned long, double>
930{
931 typedef detail::PromoteType<unsigned long, double>::Promote Promote;
932 using detail::PromoteType<unsigned long, double>::toPromote;
933};
934
935template <>
936struct PromoteTraits<unsigned long, long double> : public detail::PromoteType<unsigned long, long double>
937{
938 typedef detail::PromoteType<unsigned long, long double>::Promote Promote;
939 using detail::PromoteType<unsigned long, long double>::toPromote;
940};
941
942#ifdef LLONG_MAX
943template <>
944struct PromoteTraits<unsigned long, long long> : public detail::PromoteType<unsigned long, long long>
945{
946 typedef detail::PromoteType<unsigned long, long long>::Promote Promote;
947 using detail::PromoteType<unsigned long, long long>::toPromote;
948};
949#endif // LLONG_MAX
950
951#ifdef LLONG_MAX
952template <>
953struct PromoteTraits<unsigned long, unsigned long long> : public detail::PromoteType<unsigned long, unsigned long long>
954{
955 typedef detail::PromoteType<unsigned long, unsigned long long>::Promote Promote;
956 using detail::PromoteType<unsigned long, unsigned long long>::toPromote;
957};
958#endif // LLONG_MAX
959
960template <>
961struct PromoteTraits<float, float> : public detail::PromoteType<float, float>
962{
963 typedef detail::PromoteType<float, float>::Promote Promote;
964 using detail::PromoteType<float, float>::toPromote;
965};
966
967template <>
968struct PromoteTraits<float, bool> : public detail::PromoteType<float, bool>
969{
970 typedef detail::PromoteType<float, bool>::Promote Promote;
971 using detail::PromoteType<float, bool>::toPromote;
972};
973
974template <>
975struct PromoteTraits<float, signed char> : public detail::PromoteType<float, signed char>
976{
977 typedef detail::PromoteType<float, signed char>::Promote Promote;
978 using detail::PromoteType<float, signed char>::toPromote;
979};
980
981template <>
982struct PromoteTraits<float, unsigned char> : public detail::PromoteType<float, unsigned char>
983{
984 typedef detail::PromoteType<float, unsigned char>::Promote Promote;
985 using detail::PromoteType<float, unsigned char>::toPromote;
986};
987
988template <>
989struct PromoteTraits<float, short> : public detail::PromoteType<float, short>
990{
991 typedef detail::PromoteType<float, short>::Promote Promote;
992 using detail::PromoteType<float, short>::toPromote;
993};
994
995template <>
996struct PromoteTraits<float, unsigned short> : public detail::PromoteType<float, unsigned short>
997{
998 typedef detail::PromoteType<float, unsigned short>::Promote Promote;
999 using detail::PromoteType<float, unsigned short>::toPromote;
1000};
1001
1002template <>
1003struct PromoteTraits<float, int> : public detail::PromoteType<float, int>
1004{
1005 typedef detail::PromoteType<float, int>::Promote Promote;
1006 using detail::PromoteType<float, int>::toPromote;
1007};
1008
1009template <>
1010struct PromoteTraits<float, unsigned int> : public detail::PromoteType<float, unsigned int>
1011{
1012 typedef detail::PromoteType<float, unsigned int>::Promote Promote;
1013 using detail::PromoteType<float, unsigned int>::toPromote;
1014};
1015
1016template <>
1017struct PromoteTraits<float, long> : public detail::PromoteType<float, long>
1018{
1019 typedef detail::PromoteType<float, long>::Promote Promote;
1020 using detail::PromoteType<float, long>::toPromote;
1021};
1022
1023template <>
1024struct PromoteTraits<float, unsigned long> : public detail::PromoteType<float, unsigned long>
1025{
1026 typedef detail::PromoteType<float, unsigned long>::Promote Promote;
1027 using detail::PromoteType<float, unsigned long>::toPromote;
1028};
1029
1030template <>
1031struct PromoteTraits<float, double> : public detail::PromoteType<float, double>
1032{
1033 typedef detail::PromoteType<float, double>::Promote Promote;
1034 using detail::PromoteType<float, double>::toPromote;
1035};
1036
1037template <>
1038struct PromoteTraits<float, long double> : public detail::PromoteType<float, long double>
1039{
1040 typedef detail::PromoteType<float, long double>::Promote Promote;
1041 using detail::PromoteType<float, long double>::toPromote;
1042};
1043
1044#ifdef LLONG_MAX
1045template <>
1046struct PromoteTraits<float, long long> : public detail::PromoteType<float, long long>
1047{
1048 typedef detail::PromoteType<float, long long>::Promote Promote;
1049 using detail::PromoteType<float, long long>::toPromote;
1050};
1051#endif // LLONG_MAX
1052
1053#ifdef LLONG_MAX
1054template <>
1055struct PromoteTraits<float, unsigned long long> : public detail::PromoteType<float, unsigned long long>
1056{
1057 typedef detail::PromoteType<float, unsigned long long>::Promote Promote;
1058 using detail::PromoteType<float, unsigned long long>::toPromote;
1059};
1060#endif // LLONG_MAX
1061
1062template <>
1063struct PromoteTraits<double, double> : public detail::PromoteType<double, double>
1064{
1065 typedef detail::PromoteType<double, double>::Promote Promote;
1066 using detail::PromoteType<double, double>::toPromote;
1067};
1068
1069template <>
1070struct PromoteTraits<double, bool> : public detail::PromoteType<double, bool>
1071{
1072 typedef detail::PromoteType<double, bool>::Promote Promote;
1073 using detail::PromoteType<double, bool>::toPromote;
1074};
1075
1076template <>
1077struct PromoteTraits<double, signed char> : public detail::PromoteType<double, signed char>
1078{
1079 typedef detail::PromoteType<double, signed char>::Promote Promote;
1080 using detail::PromoteType<double, signed char>::toPromote;
1081};
1082
1083template <>
1084struct PromoteTraits<double, unsigned char> : public detail::PromoteType<double, unsigned char>
1085{
1086 typedef detail::PromoteType<double, unsigned char>::Promote Promote;
1087 using detail::PromoteType<double, unsigned char>::toPromote;
1088};
1089
1090template <>
1091struct PromoteTraits<double, short> : public detail::PromoteType<double, short>
1092{
1093 typedef detail::PromoteType<double, short>::Promote Promote;
1094 using detail::PromoteType<double, short>::toPromote;
1095};
1096
1097template <>
1098struct PromoteTraits<double, unsigned short> : public detail::PromoteType<double, unsigned short>
1099{
1100 typedef detail::PromoteType<double, unsigned short>::Promote Promote;
1101 using detail::PromoteType<double, unsigned short>::toPromote;
1102};
1103
1104template <>
1105struct PromoteTraits<double, int> : public detail::PromoteType<double, int>
1106{
1107 typedef detail::PromoteType<double, int>::Promote Promote;
1108 using detail::PromoteType<double, int>::toPromote;
1109};
1110
1111template <>
1112struct PromoteTraits<double, unsigned int> : public detail::PromoteType<double, unsigned int>
1113{
1114 typedef detail::PromoteType<double, unsigned int>::Promote Promote;
1115 using detail::PromoteType<double, unsigned int>::toPromote;
1116};
1117
1118template <>
1119struct PromoteTraits<double, long> : public detail::PromoteType<double, long>
1120{
1121 typedef detail::PromoteType<double, long>::Promote Promote;
1122 using detail::PromoteType<double, long>::toPromote;
1123};
1124
1125template <>
1126struct PromoteTraits<double, unsigned long> : public detail::PromoteType<double, unsigned long>
1127{
1128 typedef detail::PromoteType<double, unsigned long>::Promote Promote;
1129 using detail::PromoteType<double, unsigned long>::toPromote;
1130};
1131
1132template <>
1133struct PromoteTraits<double, float> : public detail::PromoteType<double, float>
1134{
1135 typedef detail::PromoteType<double, float>::Promote Promote;
1136 using detail::PromoteType<double, float>::toPromote;
1137};
1138
1139template <>
1140struct PromoteTraits<double, long double> : public detail::PromoteType<double, long double>
1141{
1142 typedef detail::PromoteType<double, long double>::Promote Promote;
1143 using detail::PromoteType<double, long double>::toPromote;
1144};
1145
1146#ifdef LLONG_MAX
1147template <>
1148struct PromoteTraits<double, long long> : public detail::PromoteType<double, long long>
1149{
1150 typedef detail::PromoteType<double, long long>::Promote Promote;
1151 using detail::PromoteType<double, long long>::toPromote;
1152};
1153#endif // LLONG_MAX
1154
1155#ifdef LLONG_MAX
1156template <>
1157struct PromoteTraits<double, unsigned long long> : public detail::PromoteType<double, unsigned long long>
1158{
1159 typedef detail::PromoteType<double, unsigned long long>::Promote Promote;
1160 using detail::PromoteType<double, unsigned long long>::toPromote;
1161};
1162#endif // LLONG_MAX
1163
1164template <>
1165struct PromoteTraits<long double, long double> : public detail::PromoteType<long double, long double>
1166{
1167 typedef detail::PromoteType<long double, long double>::Promote Promote;
1168 using detail::PromoteType<long double, long double>::toPromote;
1169};
1170
1171template <>
1172struct PromoteTraits<long double, bool> : public detail::PromoteType<long double, bool>
1173{
1174 typedef detail::PromoteType<long double, bool>::Promote Promote;
1175 using detail::PromoteType<long double, bool>::toPromote;
1176};
1177
1178template <>
1179struct PromoteTraits<long double, signed char> : public detail::PromoteType<long double, signed char>
1180{
1181 typedef detail::PromoteType<long double, signed char>::Promote Promote;
1182 using detail::PromoteType<long double, signed char>::toPromote;
1183};
1184
1185template <>
1186struct PromoteTraits<long double, unsigned char> : public detail::PromoteType<long double, unsigned char>
1187{
1188 typedef detail::PromoteType<long double, unsigned char>::Promote Promote;
1189 using detail::PromoteType<long double, unsigned char>::toPromote;
1190};
1191
1192template <>
1193struct PromoteTraits<long double, short> : public detail::PromoteType<long double, short>
1194{
1195 typedef detail::PromoteType<long double, short>::Promote Promote;
1196 using detail::PromoteType<long double, short>::toPromote;
1197};
1198
1199template <>
1200struct PromoteTraits<long double, unsigned short> : public detail::PromoteType<long double, unsigned short>
1201{
1202 typedef detail::PromoteType<long double, unsigned short>::Promote Promote;
1203 using detail::PromoteType<long double, unsigned short>::toPromote;
1204};
1205
1206template <>
1207struct PromoteTraits<long double, int> : public detail::PromoteType<long double, int>
1208{
1209 typedef detail::PromoteType<long double, int>::Promote Promote;
1210 using detail::PromoteType<long double, int>::toPromote;
1211};
1212
1213template <>
1214struct PromoteTraits<long double, unsigned int> : public detail::PromoteType<long double, unsigned int>
1215{
1216 typedef detail::PromoteType<long double, unsigned int>::Promote Promote;
1217 using detail::PromoteType<long double, unsigned int>::toPromote;
1218};
1219
1220template <>
1221struct PromoteTraits<long double, long> : public detail::PromoteType<long double, long>
1222{
1223 typedef detail::PromoteType<long double, long>::Promote Promote;
1224 using detail::PromoteType<long double, long>::toPromote;
1225};
1226
1227template <>
1228struct PromoteTraits<long double, unsigned long> : public detail::PromoteType<long double, unsigned long>
1229{
1230 typedef detail::PromoteType<long double, unsigned long>::Promote Promote;
1231 using detail::PromoteType<long double, unsigned long>::toPromote;
1232};
1233
1234template <>
1235struct PromoteTraits<long double, float> : public detail::PromoteType<long double, float>
1236{
1237 typedef detail::PromoteType<long double, float>::Promote Promote;
1238 using detail::PromoteType<long double, float>::toPromote;
1239};
1240
1241template <>
1242struct PromoteTraits<long double, double> : public detail::PromoteType<long double, double>
1243{
1244 typedef detail::PromoteType<long double, double>::Promote Promote;
1245 using detail::PromoteType<long double, double>::toPromote;
1246};
1247
1248#ifdef LLONG_MAX
1249template <>
1250struct PromoteTraits<long double, long long> : public detail::PromoteType<long double, long long>
1251{
1252 typedef detail::PromoteType<long double, long long>::Promote Promote;
1253 using detail::PromoteType<long double, long long>::toPromote;
1254};
1255#endif // LLONG_MAX
1256
1257#ifdef LLONG_MAX
1258template <>
1259struct PromoteTraits<long double, unsigned long long> : public detail::PromoteType<long double, unsigned long long>
1260{
1261 typedef detail::PromoteType<long double, unsigned long long>::Promote Promote;
1262 using detail::PromoteType<long double, unsigned long long>::toPromote;
1263};
1264#endif // LLONG_MAX
1265
1266#ifdef LLONG_MAX
1267template <>
1268struct PromoteTraits<long long, long long> : public detail::PromoteType<long long, long long>
1269{
1270 typedef detail::PromoteType<long long, long long>::Promote Promote;
1271 using detail::PromoteType<long long, long long>::toPromote;
1272};
1273#endif // LLONG_MAX
1274
1275#ifdef LLONG_MAX
1276template <>
1277struct PromoteTraits<long long, bool> : public detail::PromoteType<long long, bool>
1278{
1279 typedef detail::PromoteType<long long, bool>::Promote Promote;
1280 using detail::PromoteType<long long, bool>::toPromote;
1281};
1282#endif // LLONG_MAX
1283
1284#ifdef LLONG_MAX
1285template <>
1286struct PromoteTraits<long long, signed char> : public detail::PromoteType<long long, signed char>
1287{
1288 typedef detail::PromoteType<long long, signed char>::Promote Promote;
1289 using detail::PromoteType<long long, signed char>::toPromote;
1290};
1291#endif // LLONG_MAX
1292
1293#ifdef LLONG_MAX
1294template <>
1295struct PromoteTraits<long long, unsigned char> : public detail::PromoteType<long long, unsigned char>
1296{
1297 typedef detail::PromoteType<long long, unsigned char>::Promote Promote;
1298 using detail::PromoteType<long long, unsigned char>::toPromote;
1299};
1300#endif // LLONG_MAX
1301
1302#ifdef LLONG_MAX
1303template <>
1304struct PromoteTraits<long long, short> : public detail::PromoteType<long long, short>
1305{
1306 typedef detail::PromoteType<long long, short>::Promote Promote;
1307 using detail::PromoteType<long long, short>::toPromote;
1308};
1309#endif // LLONG_MAX
1310
1311#ifdef LLONG_MAX
1312template <>
1313struct PromoteTraits<long long, unsigned short> : public detail::PromoteType<long long, unsigned short>
1314{
1315 typedef detail::PromoteType<long long, unsigned short>::Promote Promote;
1316 using detail::PromoteType<long long, unsigned short>::toPromote;
1317};
1318#endif // LLONG_MAX
1319
1320#ifdef LLONG_MAX
1321template <>
1322struct PromoteTraits<long long, int> : public detail::PromoteType<long long, int>
1323{
1324 typedef detail::PromoteType<long long, int>::Promote Promote;
1325 using detail::PromoteType<long long, int>::toPromote;
1326};
1327#endif // LLONG_MAX
1328
1329#ifdef LLONG_MAX
1330template <>
1331struct PromoteTraits<long long, unsigned int> : public detail::PromoteType<long long, unsigned int>
1332{
1333 typedef detail::PromoteType<long long, unsigned int>::Promote Promote;
1334 using detail::PromoteType<long long, unsigned int>::toPromote;
1335};
1336#endif // LLONG_MAX
1337
1338#ifdef LLONG_MAX
1339template <>
1340struct PromoteTraits<long long, long> : public detail::PromoteType<long long, long>
1341{
1342 typedef detail::PromoteType<long long, long>::Promote Promote;
1343 using detail::PromoteType<long long, long>::toPromote;
1344};
1345#endif // LLONG_MAX
1346
1347#ifdef LLONG_MAX
1348template <>
1349struct PromoteTraits<long long, unsigned long> : public detail::PromoteType<long long, unsigned long>
1350{
1351 typedef detail::PromoteType<long long, unsigned long>::Promote Promote;
1352 using detail::PromoteType<long long, unsigned long>::toPromote;
1353};
1354#endif // LLONG_MAX
1355
1356#ifdef LLONG_MAX
1357template <>
1358struct PromoteTraits<long long, float> : public detail::PromoteType<long long, float>
1359{
1360 typedef detail::PromoteType<long long, float>::Promote Promote;
1361 using detail::PromoteType<long long, float>::toPromote;
1362};
1363#endif // LLONG_MAX
1364
1365#ifdef LLONG_MAX
1366template <>
1367struct PromoteTraits<long long, double> : public detail::PromoteType<long long, double>
1368{
1369 typedef detail::PromoteType<long long, double>::Promote Promote;
1370 using detail::PromoteType<long long, double>::toPromote;
1371};
1372#endif // LLONG_MAX
1373
1374#ifdef LLONG_MAX
1375template <>
1376struct PromoteTraits<long long, long double> : public detail::PromoteType<long long, long double>
1377{
1378 typedef detail::PromoteType<long long, long double>::Promote Promote;
1379 using detail::PromoteType<long long, long double>::toPromote;
1380};
1381#endif // LLONG_MAX
1382
1383#ifdef LLONG_MAX
1384template <>
1385struct PromoteTraits<long long, unsigned long long> : public detail::PromoteType<long long, unsigned long long>
1386{
1387 typedef detail::PromoteType<long long, unsigned long long>::Promote Promote;
1388 using detail::PromoteType<long long, unsigned long long>::toPromote;
1389};
1390#endif // LLONG_MAX
1391
1392#ifdef LLONG_MAX
1393template <>
1394struct PromoteTraits<unsigned long long, unsigned long long> : public detail::PromoteType<unsigned long long, unsigned long long>
1395{
1396 typedef detail::PromoteType<unsigned long long, unsigned long long>::Promote Promote;
1397 using detail::PromoteType<unsigned long long, unsigned long long>::toPromote;
1398};
1399#endif // LLONG_MAX
1400
1401#ifdef LLONG_MAX
1402template <>
1403struct PromoteTraits<unsigned long long, bool> : public detail::PromoteType<unsigned long long, bool>
1404{
1405 typedef detail::PromoteType<unsigned long long, bool>::Promote Promote;
1406 using detail::PromoteType<unsigned long long, bool>::toPromote;
1407};
1408#endif // LLONG_MAX
1409
1410#ifdef LLONG_MAX
1411template <>
1412struct PromoteTraits<unsigned long long, signed char> : public detail::PromoteType<unsigned long long, signed char>
1413{
1414 typedef detail::PromoteType<unsigned long long, signed char>::Promote Promote;
1415 using detail::PromoteType<unsigned long long, signed char>::toPromote;
1416};
1417#endif // LLONG_MAX
1418
1419#ifdef LLONG_MAX
1420template <>
1421struct PromoteTraits<unsigned long long, unsigned char> : public detail::PromoteType<unsigned long long, unsigned char>
1422{
1423 typedef detail::PromoteType<unsigned long long, unsigned char>::Promote Promote;
1424 using detail::PromoteType<unsigned long long, unsigned char>::toPromote;
1425};
1426#endif // LLONG_MAX
1427
1428#ifdef LLONG_MAX
1429template <>
1430struct PromoteTraits<unsigned long long, short> : public detail::PromoteType<unsigned long long, short>
1431{
1432 typedef detail::PromoteType<unsigned long long, short>::Promote Promote;
1433 using detail::PromoteType<unsigned long long, short>::toPromote;
1434};
1435#endif // LLONG_MAX
1436
1437#ifdef LLONG_MAX
1438template <>
1439struct PromoteTraits<unsigned long long, unsigned short> : public detail::PromoteType<unsigned long long, unsigned short>
1440{
1441 typedef detail::PromoteType<unsigned long long, unsigned short>::Promote Promote;
1442 using detail::PromoteType<unsigned long long, unsigned short>::toPromote;
1443};
1444#endif // LLONG_MAX
1445
1446#ifdef LLONG_MAX
1447template <>
1448struct PromoteTraits<unsigned long long, int> : public detail::PromoteType<unsigned long long, int>
1449{
1450 typedef detail::PromoteType<unsigned long long, int>::Promote Promote;
1451 using detail::PromoteType<unsigned long long, int>::toPromote;
1452};
1453#endif // LLONG_MAX
1454
1455#ifdef LLONG_MAX
1456template <>
1457struct PromoteTraits<unsigned long long, unsigned int> : public detail::PromoteType<unsigned long long, unsigned int>
1458{
1459 typedef detail::PromoteType<unsigned long long, unsigned int>::Promote Promote;
1460 using detail::PromoteType<unsigned long long, unsigned int>::toPromote;
1461};
1462#endif // LLONG_MAX
1463
1464#ifdef LLONG_MAX
1465template <>
1466struct PromoteTraits<unsigned long long, long> : public detail::PromoteType<unsigned long long, long>
1467{
1468 typedef detail::PromoteType<unsigned long long, long>::Promote Promote;
1469 using detail::PromoteType<unsigned long long, long>::toPromote;
1470};
1471#endif // LLONG_MAX
1472
1473#ifdef LLONG_MAX
1474template <>
1475struct PromoteTraits<unsigned long long, unsigned long> : public detail::PromoteType<unsigned long long, unsigned long>
1476{
1477 typedef detail::PromoteType<unsigned long long, unsigned long>::Promote Promote;
1478 using detail::PromoteType<unsigned long long, unsigned long>::toPromote;
1479};
1480#endif // LLONG_MAX
1481
1482#ifdef LLONG_MAX
1483template <>
1484struct PromoteTraits<unsigned long long, float> : public detail::PromoteType<unsigned long long, float>
1485{
1486 typedef detail::PromoteType<unsigned long long, float>::Promote Promote;
1487 using detail::PromoteType<unsigned long long, float>::toPromote;
1488};
1489#endif // LLONG_MAX
1490
1491#ifdef LLONG_MAX
1492template <>
1493struct PromoteTraits<unsigned long long, double> : public detail::PromoteType<unsigned long long, double>
1494{
1495 typedef detail::PromoteType<unsigned long long, double>::Promote Promote;
1496 using detail::PromoteType<unsigned long long, double>::toPromote;
1497};
1498#endif // LLONG_MAX
1499
1500#ifdef LLONG_MAX
1501template <>
1502struct PromoteTraits<unsigned long long, long double> : public detail::PromoteType<unsigned long long, long double>
1503{
1504 typedef detail::PromoteType<unsigned long long, long double>::Promote Promote;
1505 using detail::PromoteType<unsigned long long, long double>::toPromote;
1506};
1507#endif // LLONG_MAX
1508
1509#ifdef LLONG_MAX
1510template <>
1511struct PromoteTraits<unsigned long long, long long> : public detail::PromoteType<unsigned long long, long long>
1512{
1513 typedef detail::PromoteType<unsigned long long, long long>::Promote Promote;
1514 using detail::PromoteType<unsigned long long, long long>::toPromote;
1515};
1516#endif // LLONG_MAX
1517
1518
1519
1520#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.11.2