]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/qvm/include/boost/qvm/deduce_scalar.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / qvm / include / boost / qvm / deduce_scalar.hpp
CommitLineData
7c673cae
FG
1//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
2
3//Distributed under the Boost Software License, Version 1.0. (See accompanying
4//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#ifndef UUID_F20566FC196311E0B99D606CDFD72085
7#define UUID_F20566FC196311E0B99D606CDFD72085
8
9#include <boost/qvm/scalar_traits.hpp>
10
11namespace
12boost
13 {
14 namespace
15 qvm
16 {
17 namespace
18 deduce_scalar_detail
19 {
20 template <class A,class B> struct deduce_scalar_impl { };
21
22 template <class T>
23 struct
24 deduce_scalar_impl<T,T>
25 {
26 typedef T type;
27 };
28
29 template <> struct deduce_scalar_impl<signed char,unsigned char> { typedef unsigned char type; };
30 template <> struct deduce_scalar_impl<signed char,unsigned short> { typedef unsigned short type; };
31 template <> struct deduce_scalar_impl<signed char,unsigned int> { typedef unsigned int type; };
32 template <> struct deduce_scalar_impl<signed char,unsigned long> { typedef unsigned long type; };
33 template <> struct deduce_scalar_impl<signed char,signed short> { typedef signed short type; };
34 template <> struct deduce_scalar_impl<signed char,signed int> { typedef signed int type; };
35 template <> struct deduce_scalar_impl<signed char,signed long> { typedef signed long type; };
36 template <> struct deduce_scalar_impl<signed char,float> { typedef float type; };
37 template <> struct deduce_scalar_impl<signed char,double> { typedef double type; };
38 template <> struct deduce_scalar_impl<unsigned char,unsigned short> { typedef unsigned short type; };
39 template <> struct deduce_scalar_impl<unsigned char,unsigned int> { typedef unsigned int type; };
40 template <> struct deduce_scalar_impl<unsigned char,unsigned long> { typedef unsigned long type; };
41 template <> struct deduce_scalar_impl<unsigned char,signed short> { typedef signed short type; };
42 template <> struct deduce_scalar_impl<unsigned char,signed int> { typedef signed int type; };
43 template <> struct deduce_scalar_impl<unsigned char,signed long> { typedef signed long type; };
44 template <> struct deduce_scalar_impl<unsigned char,float> { typedef float type; };
45 template <> struct deduce_scalar_impl<unsigned char,double> { typedef double type; };
46 template <> struct deduce_scalar_impl<signed short,unsigned short> { typedef unsigned short type; };
47 template <> struct deduce_scalar_impl<signed short,unsigned int> { typedef unsigned int type; };
48 template <> struct deduce_scalar_impl<signed short,unsigned long> { typedef unsigned long type; };
49 template <> struct deduce_scalar_impl<signed short,signed int> { typedef signed int type; };
50 template <> struct deduce_scalar_impl<signed short,signed long> { typedef signed long type; };
51 template <> struct deduce_scalar_impl<signed short,float> { typedef float type; };
52 template <> struct deduce_scalar_impl<signed short,double> { typedef double type; };
53 template <> struct deduce_scalar_impl<unsigned short,unsigned int> { typedef unsigned int type; };
54 template <> struct deduce_scalar_impl<unsigned short,unsigned long> { typedef unsigned long type; };
55 template <> struct deduce_scalar_impl<unsigned short,signed int> { typedef signed int type; };
56 template <> struct deduce_scalar_impl<unsigned short,signed long> { typedef signed long type; };
57 template <> struct deduce_scalar_impl<unsigned short,float> { typedef float type; };
58 template <> struct deduce_scalar_impl<unsigned short,double> { typedef double type; };
59 template <> struct deduce_scalar_impl<signed int,unsigned int> { typedef unsigned int type; };
60 template <> struct deduce_scalar_impl<signed int,unsigned long> { typedef unsigned long type; };
61 template <> struct deduce_scalar_impl<signed int,signed long> { typedef signed long type; };
62 template <> struct deduce_scalar_impl<signed int,float> { typedef float type; };
63 template <> struct deduce_scalar_impl<signed int,double> { typedef double type; };
64 template <> struct deduce_scalar_impl<unsigned int,unsigned long> { typedef unsigned long type; };
65 template <> struct deduce_scalar_impl<unsigned int,signed long> { typedef signed long type; };
66 template <> struct deduce_scalar_impl<unsigned int,float> { typedef float type; };
67 template <> struct deduce_scalar_impl<unsigned int,double> { typedef double type; };
68 template <> struct deduce_scalar_impl<signed long,unsigned long> { typedef unsigned long type; };
69 template <> struct deduce_scalar_impl<signed long,float> { typedef float type; };
70 template <> struct deduce_scalar_impl<signed long,double> { typedef double type; };
71 template <> struct deduce_scalar_impl<unsigned long,float> { typedef float type; };
72 template <> struct deduce_scalar_impl<unsigned long,double> { typedef double type; };
73 template <> struct deduce_scalar_impl<float,double> { typedef double type; };
74
75 template <> struct deduce_scalar_impl<unsigned char,signed char> { typedef unsigned char type; };
76 template <> struct deduce_scalar_impl<unsigned short,signed char> { typedef unsigned short type; };
77 template <> struct deduce_scalar_impl<unsigned int,signed char> { typedef unsigned int type; };
78 template <> struct deduce_scalar_impl<unsigned long,signed char> { typedef unsigned long type; };
79 template <> struct deduce_scalar_impl<signed short,signed char> { typedef signed short type; };
80 template <> struct deduce_scalar_impl<signed int,signed char> { typedef signed int type; };
81 template <> struct deduce_scalar_impl<signed long,signed char> { typedef signed long type; };
82 template <> struct deduce_scalar_impl<float,signed char> { typedef float type; };
83 template <> struct deduce_scalar_impl<double,signed char> { typedef double type; };
84 template <> struct deduce_scalar_impl<unsigned short,unsigned char> { typedef unsigned short type; };
85 template <> struct deduce_scalar_impl<unsigned int,unsigned char> { typedef unsigned int type; };
86 template <> struct deduce_scalar_impl<unsigned long,unsigned char> { typedef unsigned long type; };
87 template <> struct deduce_scalar_impl<signed short,unsigned char> { typedef signed short type; };
88 template <> struct deduce_scalar_impl<signed int,unsigned char> { typedef signed int type; };
89 template <> struct deduce_scalar_impl<signed long,unsigned char> { typedef signed long type; };
90 template <> struct deduce_scalar_impl<float,unsigned char> { typedef float type; };
91 template <> struct deduce_scalar_impl<double,unsigned char> { typedef double type; };
92 template <> struct deduce_scalar_impl<unsigned short,signed short> { typedef unsigned short type; };
93 template <> struct deduce_scalar_impl<unsigned int,signed short> { typedef unsigned int type; };
94 template <> struct deduce_scalar_impl<unsigned long,signed short> { typedef unsigned long type; };
95 template <> struct deduce_scalar_impl<signed int,signed short> { typedef signed int type; };
96 template <> struct deduce_scalar_impl<signed long,signed short> { typedef signed long type; };
97 template <> struct deduce_scalar_impl<float,signed short> { typedef float type; };
98 template <> struct deduce_scalar_impl<double,signed short> { typedef double type; };
99 template <> struct deduce_scalar_impl<unsigned int,unsigned short> { typedef unsigned int type; };
100 template <> struct deduce_scalar_impl<unsigned long,unsigned short> { typedef unsigned long type; };
101 template <> struct deduce_scalar_impl<signed int,unsigned short> { typedef signed int type; };
102 template <> struct deduce_scalar_impl<signed long,unsigned short> { typedef signed long type; };
103 template <> struct deduce_scalar_impl<float,unsigned short> { typedef float type; };
104 template <> struct deduce_scalar_impl<double,unsigned short> { typedef double type; };
105 template <> struct deduce_scalar_impl<unsigned int,signed int> { typedef unsigned int type; };
106 template <> struct deduce_scalar_impl<unsigned long,signed int> { typedef unsigned long type; };
107 template <> struct deduce_scalar_impl<signed long,signed int> { typedef signed long type; };
108 template <> struct deduce_scalar_impl<float,signed int> { typedef float type; };
109 template <> struct deduce_scalar_impl<double,signed int> { typedef double type; };
110 template <> struct deduce_scalar_impl<unsigned long,unsigned int> { typedef unsigned long type; };
111 template <> struct deduce_scalar_impl<signed long,unsigned int> { typedef signed long type; };
112 template <> struct deduce_scalar_impl<float,unsigned int> { typedef float type; };
113 template <> struct deduce_scalar_impl<double,unsigned int> { typedef double type; };
114 template <> struct deduce_scalar_impl<unsigned long,signed long> { typedef unsigned long type; };
115 template <> struct deduce_scalar_impl<float,signed long> { typedef float type; };
116 template <> struct deduce_scalar_impl<double,signed long> { typedef double type; };
117 template <> struct deduce_scalar_impl<float,unsigned long> { typedef float type; };
118 template <> struct deduce_scalar_impl<double,unsigned long> { typedef double type; };
119 template <> struct deduce_scalar_impl<double,float> { typedef double type; };
120 }
121
122 template <class A,class B>
123 struct
124 deduce_scalar
125 {
126 typedef typename deduce_scalar_detail::deduce_scalar_impl<A,B>::type type;
127 };
128 }
129 }
130
131#endif