]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/qvm/test/deduce_mat_test.cpp
1 // Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
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)
6 #ifdef BOOST_QVM_TEST_SINGLE_HEADER
7 # include BOOST_QVM_TEST_SINGLE_HEADER
9 # include <boost/qvm/deduce_mat.hpp>
12 template <class T
,class U
>
21 template <class A
,class B
,int R
,int C
,class Result
>
25 same_type
<typename
boost::qvm::deduce_mat2
<A
,B
,R
,C
>::type
,Result
> a
;
26 same_type
<typename
boost::qvm::deduce_mat2
<B
,A
,R
,C
>::type
,Result
> b
;
29 template <class T
,int R
,int C
> struct m1
;
30 template <class T
,int R
,int C
> struct m2
;
38 template <class T
,int R
,int C
>
40 mat_traits
< m1
<T
,R
,C
> >
42 typedef T scalar_type
;
43 static int const rows
=R
;
44 static int const cols
=C
;
47 template <class T
,int R
,int C
>
49 mat_traits
< m2
<T
,R
,C
> >
51 typedef T scalar_type
;
52 static int const rows
=R
;
53 static int const cols
=C
;
56 template <int R
,int C
,class S
,int M2R
,int M2C
,class M2S
>
58 deduce_mat
<m2
<M2S
,M2R
,M2C
>,R
,C
,S
>
60 typedef m2
<S
,R
,C
> type
;
63 template <int R
,int C
,class S
,class AS
,int AR
,int AC
,class BS
,int BR
,int BC
>
65 deduce_mat2
<m2
<AS
,AR
,AC
>,m2
<BS
,BR
,BC
>,R
,C
,S
>
67 typedef m2
<S
,R
,C
> type
;
75 same_type
< boost::qvm::deduce_mat
< m1
<int,4,2> >::type
, m1
<int,4,2> >();
76 same_type
< boost::qvm::deduce_mat
< m1
<int,4,2>, 4, 4 >::type
, boost::qvm::mat
<int,4,4> >();
77 check
< m1
<int,4,2>, m1
<int,4,2>, 4, 2, m1
<int,4,2> >();
78 check
< m1
<int,4,2>, m1
<float,4,2>, 4, 4, boost::qvm::mat
<float,4,4> >();
80 same_type
< boost::qvm::deduce_mat
< m2
<int,4,2> >::type
, m2
<int,4,2> >();
81 same_type
< boost::qvm::deduce_mat
< m2
<int,4,2>, 4, 4 >::type
, m2
<int,4,4> >();
82 check
< m2
<int,4,2>, m2
<int,4,2>, 4, 2, m2
<int,4,2> >();
83 check
< m2
<int,4,2>, m2
<float,4,2>, 4, 4, m2
<float,4,4> >();