1 /*============================================================================== 2 Copyright (c) 2005-2010 Joel de Guzman 3 Copyright (c) 2010 Thomas Heller 4 5 Distributed under the Boost Software License, Version 1.0. (See accompanying 6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7 ==============================================================================*/ 8 9 10 11 12 13 14 15 template <typename T, typename A0> 16 inline 17 typename expression::construct<detail::target<T>, A0>::type const construct(A0 const & a0)18 construct(A0 const& a0) 19 { 20 return 21 expression:: 22 construct<detail::target<T>, A0>:: 23 make(detail::target<T>(), a0); 24 } 25 26 27 28 29 30 31 32 template <typename T, typename A0 , typename A1> 33 inline 34 typename expression::construct<detail::target<T>, A0 , A1>::type const construct(A0 const & a0,A1 const & a1)35 construct(A0 const& a0 , A1 const& a1) 36 { 37 return 38 expression:: 39 construct<detail::target<T>, A0 , A1>:: 40 make(detail::target<T>(), a0 , a1); 41 } 42 43 44 45 46 47 48 49 template <typename T, typename A0 , typename A1 , typename A2> 50 inline 51 typename expression::construct<detail::target<T>, A0 , A1 , A2>::type const construct(A0 const & a0,A1 const & a1,A2 const & a2)52 construct(A0 const& a0 , A1 const& a1 , A2 const& a2) 53 { 54 return 55 expression:: 56 construct<detail::target<T>, A0 , A1 , A2>:: 57 make(detail::target<T>(), a0 , a1 , a2); 58 } 59 60 61 62 63 64 65 66 template <typename T, typename A0 , typename A1 , typename A2 , typename A3> 67 inline 68 typename expression::construct<detail::target<T>, A0 , A1 , A2 , A3>::type const construct(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3)69 construct(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) 70 { 71 return 72 expression:: 73 construct<detail::target<T>, A0 , A1 , A2 , A3>:: 74 make(detail::target<T>(), a0 , a1 , a2 , a3); 75 } 76 77 78 79 80 81 82 83 template <typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4> 84 inline 85 typename expression::construct<detail::target<T>, A0 , A1 , A2 , A3 , A4>::type const construct(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4)86 construct(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) 87 { 88 return 89 expression:: 90 construct<detail::target<T>, A0 , A1 , A2 , A3 , A4>:: 91 make(detail::target<T>(), a0 , a1 , a2 , a3 , a4); 92 } 93 94 95 96 97 98 99 100 template <typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> 101 inline 102 typename expression::construct<detail::target<T>, A0 , A1 , A2 , A3 , A4 , A5>::type const construct(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5)103 construct(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) 104 { 105 return 106 expression:: 107 construct<detail::target<T>, A0 , A1 , A2 , A3 , A4 , A5>:: 108 make(detail::target<T>(), a0 , a1 , a2 , a3 , a4 , a5); 109 } 110 111 112 113 114 115 116 117 template <typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> 118 inline 119 typename expression::construct<detail::target<T>, A0 , A1 , A2 , A3 , A4 , A5 , A6>::type const construct(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5,A6 const & a6)120 construct(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) 121 { 122 return 123 expression:: 124 construct<detail::target<T>, A0 , A1 , A2 , A3 , A4 , A5 , A6>:: 125 make(detail::target<T>(), a0 , a1 , a2 , a3 , a4 , a5 , a6); 126 } 127 128 129 130 131 132 133 134 template <typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> 135 inline 136 typename expression::construct<detail::target<T>, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>::type const construct(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5,A6 const & a6,A7 const & a7)137 construct(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) 138 { 139 return 140 expression:: 141 construct<detail::target<T>, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>:: 142 make(detail::target<T>(), a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); 143 } 144 145 146 147 148 149 150 151 template <typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> 152 inline 153 typename expression::construct<detail::target<T>, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>::type const construct(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5,A6 const & a6,A7 const & a7,A8 const & a8)154 construct(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) 155 { 156 return 157 expression:: 158 construct<detail::target<T>, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>:: 159 make(detail::target<T>(), a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); 160 } 161 162 163 164 165 166 167 168 template <typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9> 169 inline 170 typename expression::construct<detail::target<T>, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>::type const construct(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5,A6 const & a6,A7 const & a7,A8 const & a8,A9 const & a9)171 construct(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) 172 { 173 return 174 expression:: 175 construct<detail::target<T>, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>:: 176 make(detail::target<T>(), a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9); 177 } 178