• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include <boost/qvm/deduce_scalar.hpp>
7 
8 template <class T,class U>
9 struct same_type;
10 
11 template <class T>
12 struct
13 same_type<T,T>
14     {
15     };
16 
17 template <class A,class B,class R>
18 struct
19 check
20     {
21     same_type<typename boost::qvm::deduce_scalar<A,B>::type,R> a;
22     same_type<typename boost::qvm::deduce_scalar<B,A>::type,R> b;
23     };
24 
25 int
main()26 main()
27     {
28     check<signed char,signed char,signed char>();
29     check<signed char,signed short,signed short>();
30     check<signed char,signed int,signed int>();
31     check<signed char,signed long,signed long>();
32     check<signed char,unsigned char,unsigned char>();
33     check<signed char,unsigned short,unsigned short>();
34     check<signed char,unsigned int,unsigned int>();
35     check<signed char,unsigned long,unsigned long>();
36     check<signed char,float,float>();
37     check<signed char,double,double>();
38     check<signed short,signed short,signed short>();
39     check<signed short,signed int,signed int>();
40     check<signed short,signed long,signed long>();
41     check<signed short,unsigned short,unsigned short>();
42     check<signed short,unsigned int,unsigned int>();
43     check<signed short,unsigned long,unsigned long>();
44     check<signed short,float,float>();
45     check<signed short,double,double>();
46     check<signed int,signed int,signed int>();
47     check<signed int,signed long,signed long>();
48     check<signed int,unsigned int,unsigned int>();
49     check<signed int,unsigned long,unsigned long>();
50     check<signed int,float,float>();
51     check<signed int,double,double>();
52     check<signed long,signed long,signed long>();
53     check<signed long,unsigned long,unsigned long>();
54     check<signed long,float,float>();
55     check<signed long,double,double>();
56     check<unsigned char,unsigned char,unsigned char>();
57     check<unsigned char,unsigned short,unsigned short>();
58     check<unsigned char,unsigned int,unsigned int>();
59     check<unsigned char,unsigned long,unsigned long>();
60     check<unsigned char,float,float>();
61     check<unsigned char,double,double>();
62     check<unsigned short,unsigned short,unsigned short>();
63     check<unsigned short,unsigned int,unsigned int>();
64     check<unsigned short,unsigned long,unsigned long>();
65     check<unsigned short,float,float>();
66     check<unsigned short,double,double>();
67     check<unsigned int,unsigned int,unsigned int>();
68     check<unsigned int,unsigned long,unsigned long>();
69     check<unsigned int,float,float>();
70     check<unsigned int,double,double>();
71     check<unsigned long,unsigned long,unsigned long>();
72     check<unsigned long,float,float>();
73     check<unsigned long,double,double>();
74     check<float,float,float>();
75     check<float,double,double>();
76     check<double,double,double>();
77     }
78