19 #ifndef PDB_CPPLAMBDACREATIONFUNCTIONS_H
20 #define PDB_CPPLAMBDACREATIONFUNCTIONS_H
47 template <
typename ParamOne,
typename F>
54 ParamOne>>(arg, pOne, p2, p3, p4, p5));
65 template <
typename ParamOne,
typename F>
66 auto makeLambda(Handle<ParamOne>& pOne, F arg) -> LambdaTree<std::enable_if_t<!std::is_reference<decltype(arg(pOne))>::value,
67 decltype(arg(pOne))>> {
68 Handle<Nothing> p2, p3, p4, p5;
69 return LambdaTree<decltype(arg(pOne))>(std::make_shared<CPlusPlusLambda<F,
71 ParamOne>>(arg, pOne, p2, p3, p4, p5));
84 template <
typename ParamOne,
typename ParamTwo,
typename F>
92 ParamTwo>>(arg, pOne, pTwo, p3, p4, p5));
105 template <
typename ParamOne,
typename ParamTwo,
typename F>
106 auto makeLambda(Handle<ParamOne>& pOne, Handle<ParamTwo>& pTwo, F arg) -> LambdaTree<std::enable_if_t<!std::is_reference<decltype(arg(pOne, pTwo))>::value,
107 decltype(arg(pOne, pTwo))>> {
108 Handle<Nothing> p3, p4, p5;
109 return LambdaTree<decltype(arg(pOne, pTwo))>(std::make_shared<CPlusPlusLambda<F, decltype(arg(pOne, pTwo)), ParamOne, ParamTwo>>(arg, pOne, pTwo, p3, p4, p5));
124 template <
typename ParamOne,
typename ParamTwo,
typename ParamThree,
typename F>
134 ParamThree>>(arg, pOne, pTwo, pThree, p4, p5));
149 template <
typename ParamOne,
typename ParamTwo,
typename ParamThree,
typename F>
151 decltype(arg(pOne, pTwo, pThree))>> {
154 decltype(arg(pOne, pTwo, pThree)),
157 ParamThree>>(arg, pOne, pTwo, pThree, p4, p5));
174 template <
typename ParamOne,
typename ParamTwo,
typename ParamThree,
typename ParamFour,
typename F>
183 ParamFour>>(arg, pOne, pTwo, pThree, pFour, p5));
200 template <
typename ParamOne,
typename ParamTwo,
typename ParamThree,
typename ParamFour,
typename F>
201 auto makeLambda(Handle<ParamOne>& pOne, Handle<ParamTwo>& pTwo, Handle<ParamThree>& pThree, Handle<ParamFour>& pFour, F arg) -> LambdaTree<
202 std::enable_if_t<!std::is_reference<decltype(arg(pOne, pTwo, pThree, pFour))>::value, decltype(arg(pOne, pTwo, pThree, pFour))>> {
205 return LambdaTree<decltype(arg(pOne, pTwo, pThree, pFour))>(std::make_shared<CPlusPlusLambda<F,
206 decltype(arg(pOne, pTwo, pThree, pFour)),
210 ParamFour>>(arg, pOne, pTwo, pThree, pFour, p5));
229 template <
typename ParamOne,
typename ParamTwo,
typename ParamThree,
typename ParamFour,
typename ParamFive,
typename F>
237 return LambdaTree<
Ptr<
typename std::remove_reference<decltype(arg(pOne,
247 ParamFive>>(arg, pOne, pTwo, pThree, pFour, pFive));
266 template <
typename ParamOne,
typename ParamTwo,
typename ParamThree,
typename ParamFour,
typename ParamFive,
typename F>
268 Handle<ParamTwo>& pTwo,
269 Handle<ParamThree>& pThree,
270 Handle<ParamFour>& pFour,
271 Handle<ParamFive>& pFive,
272 F arg) -> LambdaTree<std::enable_if_t<!std::is_reference<decltype(arg(pOne, pTwo, pThree, pFour, pFive))>::value,
273 decltype(arg(pOne, pTwo, pThree, pFour, pFive))>> {
274 return LambdaTree<decltype(arg(pOne, pTwo, pThree, pFour, pFive))>(std::make_shared<CPlusPlusLambda<F,
275 decltype(arg(pOne, pTwo, pThree, pFour, pFive)),
280 ParamFive>>(arg, pOne, pTwo, pThree, pFour, pFive));
284 #endif //PDB_CPPLAMBDACREATIONFUNCTIONS_H
auto makeLambda(Handle< ParamOne > &pOne, F arg) -> LambdaTree< std::enable_if_t< std::is_reference< decltype(arg(pOne))>::value, Ptr< typename std::remove_reference< decltype(arg(pOne))>::type >>>