[ 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
42 template <>
43 struct 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
49 template <>
50 struct 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
56 template <>
57 struct 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
63 template <>
64 struct 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
70 template <>
71 struct 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
77 template <>
78 struct 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
84 template <>
85 struct 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
91 template <>
92 struct 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
98 template <>
99 struct 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
105 template <>
106 struct 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
112 template <>
113 struct 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
119 template <>
120 struct 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
127 template <>
128 struct 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
136 template <>
137 struct 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
144 template <>
145 struct 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
151 template <>
152 struct 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
158 template <>
159 struct 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
165 template <>
166 struct 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
172 template <>
173 struct 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
179 template <>
180 struct 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
186 template <>
187 struct 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
193 template <>
194 struct 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
200 template <>
201 struct 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
207 template <>
208 struct 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
214 template <>
215 struct 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
221 template <>
222 struct 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
229 template <>
230 struct 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
238 template <>
239 struct 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
246 template <>
247 struct 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
253 template <>
254 struct 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
260 template <>
261 struct 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
267 template <>
268 struct 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
274 template <>
275 struct 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
281 template <>
282 struct 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
288 template <>
289 struct 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
295 template <>
296 struct 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
302 template <>
303 struct 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
309 template <>
310 struct 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
316 template <>
317 struct 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
323 template <>
324 struct 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
331 template <>
332 struct 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
340 template <>
341 struct 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
348 template <>
349 struct 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
355 template <>
356 struct 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
362 template <>
363 struct 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
369 template <>
370 struct 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
376 template <>
377 struct 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
383 template <>
384 struct 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
390 template <>
391 struct 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
397 template <>
398 struct 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
404 template <>
405 struct 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
411 template <>
412 struct 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
418 template <>
419 struct 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
425 template <>
426 struct 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
433 template <>
434 struct 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
442 template <>
443 struct 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
450 template <>
451 struct 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
457 template <>
458 struct 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
464 template <>
465 struct 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
471 template <>
472 struct 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
478 template <>
479 struct 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
485 template <>
486 struct 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
492 template <>
493 struct 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
499 template <>
500 struct 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
506 template <>
507 struct 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
513 template <>
514 struct 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
520 template <>
521 struct 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
527 template <>
528 struct 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
535 template <>
536 struct 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
544 template <>
545 struct 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
552 template <>
553 struct 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
559 template <>
560 struct 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
566 template <>
567 struct 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
573 template <>
574 struct 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
580 template <>
581 struct 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
587 template <>
588 struct 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
594 template <>
595 struct 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
601 template <>
602 struct 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
608 template <>
609 struct 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
615 template <>
616 struct 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
622 template <>
623 struct 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
629 template <>
630 struct 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
637 template <>
638 struct 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
646 template <>
647 struct 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
654 template <>
655 struct 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
661 template <>
662 struct 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
668 template <>
669 struct 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
675 template <>
676 struct 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
682 template <>
683 struct 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
689 template <>
690 struct 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
696 template <>
697 struct 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
703 template <>
704 struct 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
710 template <>
711 struct 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
717 template <>
718 struct 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
724 template <>
725 struct 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
731 template <>
732 struct 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
739 template <>
740 struct 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
748 template <>
749 struct 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
756 template <>
757 struct 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
763 template <>
764 struct 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
770 template <>
771 struct 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
777 template <>
778 struct 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
784 template <>
785 struct 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
791 template <>
792 struct 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
798 template <>
799 struct 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
805 template <>
806 struct 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
812 template <>
813 struct 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
819 template <>
820 struct 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
826 template <>
827 struct 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
833 template <>
834 struct 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
841 template <>
842 struct 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
850 template <>
851 struct 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
858 template <>
859 struct 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
865 template <>
866 struct 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
872 template <>
873 struct 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
879 template <>
880 struct 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
886 template <>
887 struct 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
893 template <>
894 struct 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
900 template <>
901 struct 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
907 template <>
908 struct 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
914 template <>
915 struct 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
921 template <>
922 struct 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
928 template <>
929 struct 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
935 template <>
936 struct 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
943 template <>
944 struct 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
952 template <>
953 struct 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
960 template <>
961 struct 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
967 template <>
968 struct 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
974 template <>
975 struct 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
981 template <>
982 struct 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
988 template <>
989 struct 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
995 template <>
996 struct 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
1002 template <>
1003 struct 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
1009 template <>
1010 struct 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
1016 template <>
1017 struct 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
1023 template <>
1024 struct 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
1030 template <>
1031 struct 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
1037 template <>
1038 struct 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
1045 template <>
1046 struct 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
1054 template <>
1055 struct 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
1062 template <>
1063 struct 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
1069 template <>
1070 struct 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
1076 template <>
1077 struct 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
1083 template <>
1084 struct 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
1090 template <>
1091 struct 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
1097 template <>
1098 struct 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
1104 template <>
1105 struct 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
1111 template <>
1112 struct 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
1118 template <>
1119 struct 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
1125 template <>
1126 struct 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
1132 template <>
1133 struct 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
1139 template <>
1140 struct 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
1147 template <>
1148 struct 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
1156 template <>
1157 struct 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
1164 template <>
1165 struct 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
1171 template <>
1172 struct 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
1178 template <>
1179 struct 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
1185 template <>
1186 struct 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
1192 template <>
1193 struct 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
1199 template <>
1200 struct 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
1206 template <>
1207 struct 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
1213 template <>
1214 struct 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
1220 template <>
1221 struct 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
1227 template <>
1228 struct 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
1234 template <>
1235 struct 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
1241 template <>
1242 struct 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
1249 template <>
1250 struct 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
1258 template <>
1259 struct 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
1267 template <>
1268 struct 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
1276 template <>
1277 struct 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
1285 template <>
1286 struct 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
1294 template <>
1295 struct 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
1303 template <>
1304 struct 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
1312 template <>
1313 struct 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
1321 template <>
1322 struct 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
1330 template <>
1331 struct 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
1339 template <>
1340 struct 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
1348 template <>
1349 struct 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
1357 template <>
1358 struct 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
1366 template <>
1367 struct 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
1375 template <>
1376 struct 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
1384 template <>
1385 struct 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
1393 template <>
1394 struct 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
1402 template <>
1403 struct 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
1411 template <>
1412 struct 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
1420 template <>
1421 struct 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
1429 template <>
1430 struct 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
1438 template <>
1439 struct 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
1447 template <>
1448 struct 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
1456 template <>
1457 struct 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
1465 template <>
1466 struct 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
1474 template <>
1475 struct 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
1483 template <>
1484 struct 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
1492 template <>
1493 struct 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
1501 template <>
1502 struct 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
1510 template <>
1511 struct 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.12.1