annotate DEPENDENCIES/generic/include/boost/proto/detail/preprocessed/deduce_domain_n.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 ///////////////////////////////////////////////////////////////////////////////
Chris@16 2 // deduce_domain_n.hpp
Chris@16 3 // Definitions of common_domain[n] and deduce_domain[n] class templates.
Chris@16 4 //
Chris@16 5 // Copyright 2008 Eric Niebler. Distributed under the Boost
Chris@16 6 // Software License, Version 1.0. (See accompanying file
Chris@16 7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 8 template<typename A0 , typename A1 , typename A2>
Chris@16 9 struct common_domain3
Chris@16 10 {
Chris@16 11 typedef A0 common1;
Chris@16 12 typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3;
Chris@16 13 typedef common3 type;
Chris@16 14 BOOST_PROTO_ASSERT_VALID_DOMAIN(type);
Chris@16 15 };
Chris@16 16 template<typename E0 , typename E1 , typename E2>
Chris@16 17 struct deduce_domain3
Chris@16 18 : common_domain3<
Chris@16 19 typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type
Chris@16 20 >
Chris@16 21 {};
Chris@16 22 template<typename A0 , typename A1 , typename A2 , typename A3>
Chris@16 23 struct common_domain4
Chris@16 24 {
Chris@16 25 typedef A0 common1;
Chris@16 26 typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4;
Chris@16 27 typedef common4 type;
Chris@16 28 BOOST_PROTO_ASSERT_VALID_DOMAIN(type);
Chris@16 29 };
Chris@16 30 template<typename E0 , typename E1 , typename E2 , typename E3>
Chris@16 31 struct deduce_domain4
Chris@16 32 : common_domain4<
Chris@16 33 typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type
Chris@16 34 >
Chris@16 35 {};
Chris@16 36 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
Chris@16 37 struct common_domain5
Chris@16 38 {
Chris@16 39 typedef A0 common1;
Chris@16 40 typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5;
Chris@16 41 typedef common5 type;
Chris@16 42 BOOST_PROTO_ASSERT_VALID_DOMAIN(type);
Chris@16 43 };
Chris@16 44 template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4>
Chris@16 45 struct deduce_domain5
Chris@16 46 : common_domain5<
Chris@16 47 typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type
Chris@16 48 >
Chris@16 49 {};
Chris@16 50 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
Chris@16 51 struct common_domain6
Chris@16 52 {
Chris@16 53 typedef A0 common1;
Chris@16 54 typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; typedef typename common_domain2<common5, A5>::type common6;
Chris@16 55 typedef common6 type;
Chris@16 56 BOOST_PROTO_ASSERT_VALID_DOMAIN(type);
Chris@16 57 };
Chris@16 58 template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4 , typename E5>
Chris@16 59 struct deduce_domain6
Chris@16 60 : common_domain6<
Chris@16 61 typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type , typename domain_of<E5 >::type
Chris@16 62 >
Chris@16 63 {};
Chris@16 64 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
Chris@16 65 struct common_domain7
Chris@16 66 {
Chris@16 67 typedef A0 common1;
Chris@16 68 typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; typedef typename common_domain2<common5, A5>::type common6; typedef typename common_domain2<common6, A6>::type common7;
Chris@16 69 typedef common7 type;
Chris@16 70 BOOST_PROTO_ASSERT_VALID_DOMAIN(type);
Chris@16 71 };
Chris@16 72 template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4 , typename E5 , typename E6>
Chris@16 73 struct deduce_domain7
Chris@16 74 : common_domain7<
Chris@16 75 typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type , typename domain_of<E5 >::type , typename domain_of<E6 >::type
Chris@16 76 >
Chris@16 77 {};
Chris@16 78 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
Chris@16 79 struct common_domain8
Chris@16 80 {
Chris@16 81 typedef A0 common1;
Chris@16 82 typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; typedef typename common_domain2<common5, A5>::type common6; typedef typename common_domain2<common6, A6>::type common7; typedef typename common_domain2<common7, A7>::type common8;
Chris@16 83 typedef common8 type;
Chris@16 84 BOOST_PROTO_ASSERT_VALID_DOMAIN(type);
Chris@16 85 };
Chris@16 86 template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4 , typename E5 , typename E6 , typename E7>
Chris@16 87 struct deduce_domain8
Chris@16 88 : common_domain8<
Chris@16 89 typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type , typename domain_of<E5 >::type , typename domain_of<E6 >::type , typename domain_of<E7 >::type
Chris@16 90 >
Chris@16 91 {};
Chris@16 92 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
Chris@16 93 struct common_domain9
Chris@16 94 {
Chris@16 95 typedef A0 common1;
Chris@16 96 typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; typedef typename common_domain2<common5, A5>::type common6; typedef typename common_domain2<common6, A6>::type common7; typedef typename common_domain2<common7, A7>::type common8; typedef typename common_domain2<common8, A8>::type common9;
Chris@16 97 typedef common9 type;
Chris@16 98 BOOST_PROTO_ASSERT_VALID_DOMAIN(type);
Chris@16 99 };
Chris@16 100 template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4 , typename E5 , typename E6 , typename E7 , typename E8>
Chris@16 101 struct deduce_domain9
Chris@16 102 : common_domain9<
Chris@16 103 typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type , typename domain_of<E5 >::type , typename domain_of<E6 >::type , typename domain_of<E7 >::type , typename domain_of<E8 >::type
Chris@16 104 >
Chris@16 105 {};
Chris@16 106 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
Chris@16 107 struct common_domain10
Chris@16 108 {
Chris@16 109 typedef A0 common1;
Chris@16 110 typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; typedef typename common_domain2<common5, A5>::type common6; typedef typename common_domain2<common6, A6>::type common7; typedef typename common_domain2<common7, A7>::type common8; typedef typename common_domain2<common8, A8>::type common9; typedef typename common_domain2<common9, A9>::type common10;
Chris@16 111 typedef common10 type;
Chris@16 112 BOOST_PROTO_ASSERT_VALID_DOMAIN(type);
Chris@16 113 };
Chris@16 114 template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4 , typename E5 , typename E6 , typename E7 , typename E8 , typename E9>
Chris@16 115 struct deduce_domain10
Chris@16 116 : common_domain10<
Chris@16 117 typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type , typename domain_of<E5 >::type , typename domain_of<E6 >::type , typename domain_of<E7 >::type , typename domain_of<E8 >::type , typename domain_of<E9 >::type
Chris@16 118 >
Chris@16 119 {};