pputl  0.2.1
pputl Preprocessor Utilities
Macros
any.h File Reference

PPUTL_JOIN_ANY - joins [0, 256) args using a joining function More...

#include "pputl/cat.h"
#include "pputl/first.h"
#include "pputl/rest.h"
#include "pputl/tuple/elem.h"

Go to the source code of this file.

Macros

#define PPUTL_JOIN_ANY(joining_fn, ...)
 
#define PPUTL_DETAIL_JOIN_REDUCER(a, v, i)   (PPUTL_TUPLE_ELEM(0, a), PPUTL_TUPLE_ELEM(0, a)(PPUTL_TUPLE_ELEM(1, a), v))
 
#define PPUTL_DETAIL_JOIN_REDUCE(reducer, initial, ...)
 
#define PPUTL_DETAIL_JOIN_REDUCE_CAT_X(a, b)   a##b
 
#define PPUTL_DETAIL_JOIN_REDUCE_CAT(a, b)   PPUTL_DETAIL_JOIN_REDUCE_CAT_X(a, b)
 
#define PPUTL_DETAIL_JOIN_REDUCE_FIRST(i, ...)   i
 
#define PPUTL_DETAIL_JOIN_REDUCE_REST(_, ...)   __VA_ARGS__
 
#define PPUTL_DETAIL_JOIN_REDUCE_00(r, a, is)   a
 
#define PPUTL_DETAIL_JOIN_REDUCE_01(r, a, is, v)   r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is)
 
#define PPUTL_DETAIL_JOIN_REDUCE_02(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_01(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_03(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_02(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_04(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_03(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_05(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_04(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_06(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_05(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_07(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_06(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_08(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_07(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_09(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_08(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_0A(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_09(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_0B(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_0A(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_0C(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_0B(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_0D(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_0C(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_0E(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_0D(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_0F(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_0E(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_10(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_0F(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_11(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_10(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_12(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_11(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_13(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_12(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_14(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_13(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_15(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_14(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_16(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_15(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_17(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_16(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_18(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_17(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_19(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_18(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_1A(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_19(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_1B(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_1A(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_1C(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_1B(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_1D(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_1C(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_1E(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_1D(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_1F(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_1E(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_20(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_1F(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_21(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_20(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_22(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_21(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_23(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_22(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_24(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_23(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_25(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_24(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_26(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_25(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_27(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_26(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_28(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_27(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_29(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_28(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_2A(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_29(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_2B(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_2A(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_2C(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_2B(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_2D(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_2C(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_2E(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_2D(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_2F(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_2E(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_30(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_2F(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_31(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_30(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_32(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_31(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_33(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_32(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_34(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_33(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_35(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_34(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_36(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_35(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_37(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_36(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_38(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_37(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_39(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_38(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_3A(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_39(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_3B(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_3A(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_3C(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_3B(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_3D(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_3C(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_3E(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_3D(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_3F(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_3E(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_40(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_3F(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_41(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_40(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_42(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_41(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_43(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_42(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_44(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_43(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_45(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_44(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_46(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_45(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_47(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_46(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_48(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_47(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_49(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_48(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_4A(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_49(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_4B(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_4A(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_4C(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_4B(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_4D(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_4C(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_4E(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_4D(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_4F(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_4E(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_50(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_4F(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_51(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_50(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_52(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_51(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_53(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_52(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_54(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_53(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_55(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_54(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_56(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_55(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_57(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_56(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_58(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_57(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_59(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_58(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_5A(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_59(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_5B(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_5A(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_5C(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_5B(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_5D(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_5C(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_5E(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_5D(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_5F(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_5E(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_60(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_5F(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_61(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_60(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_62(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_61(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_63(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_62(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_64(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_63(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_65(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_64(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_66(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_65(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_67(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_66(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_68(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_67(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_69(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_68(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_6A(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_69(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_6B(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_6A(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_6C(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_6B(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_6D(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_6C(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_6E(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_6D(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_6F(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_6E(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_70(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_6F(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_71(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_70(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_72(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_71(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_73(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_72(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_74(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_73(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_75(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_74(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_76(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_75(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_77(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_76(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_78(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_77(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_79(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_78(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_7A(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_79(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_7B(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_7A(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_7C(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_7B(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_7D(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_7C(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_7E(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_7D(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_7F(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_7E(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_80(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_7F(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_81(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_80(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_82(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_81(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_83(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_82(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_84(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_83(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_85(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_84(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_86(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_85(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_87(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_86(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_88(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_87(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_89(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_88(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_8A(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_89(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_8B(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_8A(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_8C(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_8B(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_8D(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_8C(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_8E(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_8D(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_8F(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_8E(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_90(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_8F(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_91(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_90(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_92(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_91(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_93(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_92(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_94(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_93(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_95(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_94(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_96(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_95(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_97(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_96(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_98(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_97(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_99(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_98(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_9A(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_99(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_9B(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_9A(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_9C(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_9B(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_9D(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_9C(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_9E(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_9D(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_9F(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_9E(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_A0(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_9F(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_A1(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_A0(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_A2(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_A1(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_A3(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_A2(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_A4(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_A3(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_A5(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_A4(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_A6(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_A5(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_A7(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_A6(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_A8(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_A7(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_A9(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_A8(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_AA(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_A9(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_AB(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_AA(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_AC(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_AB(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_AD(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_AC(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_AE(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_AD(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_AF(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_AE(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_B0(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_AF(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_B1(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_B0(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_B2(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_B1(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_B3(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_B2(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_B4(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_B3(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_B5(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_B4(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_B6(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_B5(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_B7(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_B6(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_B8(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_B7(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_B9(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_B8(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_BA(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_B9(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_BB(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_BA(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_BC(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_BB(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_BD(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_BC(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_BE(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_BD(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_BF(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_BE(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_C0(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_BF(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_C1(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_C0(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_C2(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_C1(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_C3(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_C2(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_C4(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_C3(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_C5(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_C4(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_C6(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_C5(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_C7(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_C6(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_C8(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_C7(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_C9(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_C8(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_CA(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_C9(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_CB(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_CA(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_CC(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_CB(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_CD(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_CC(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_CE(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_CD(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_CF(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_CE(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_D0(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_CF(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_D1(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_D0(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_D2(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_D1(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_D3(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_D2(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_D4(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_D3(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_D5(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_D4(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_D6(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_D5(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_D7(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_D6(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_D8(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_D7(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_D9(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_D8(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_DA(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_D9(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_DB(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_DA(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_DC(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_DB(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_DD(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_DC(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_DE(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_DD(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_DF(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_DE(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_E0(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_DF(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_E1(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_E0(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_E2(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_E1(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_E3(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_E2(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_E4(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_E3(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_E5(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_E4(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_E6(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_E5(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_E7(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_E6(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_E8(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_E7(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_E9(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_E8(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_EA(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_E9(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_EB(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_EA(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_EC(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_EB(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_ED(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_EC(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_EE(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_ED(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_EF(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_EE(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_F0(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_EF(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_F1(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_F0(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_F2(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_F1(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_F3(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_F2(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_F4(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_F3(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_F5(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_F4(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_F6(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_F5(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_F7(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_F6(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_F8(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_F7(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_F9(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_F8(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_FA(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_F9(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_FB(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_FA(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_FC(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_FB(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_FD(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_FC(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_FE(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_FD(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_FF(r, a, is, v, ...)   PPUTL_DETAIL_JOIN_REDUCE_FE(r, r(a, v, PPUTL_DETAIL_JOIN_REDUCE_FIRST is), (PPUTL_DETAIL_JOIN_REDUCE_REST is), __VA_ARGS__)
 
#define PPUTL_DETAIL_JOIN_REDUCE_CHOICE( _FF, _FE, _FD, _FC, _FB, _FA, _F9, _F8, _F7, _F6, _F5, _F4, _F3, _F2, _F1, _F0, _EF, _EE, _ED, _EC, _EB, _EA, _E9, _E8, _E7, _E6, _E5, _E4, _E3, _E2, _E1, _E0, _DF, _DE, _DD, _DC, _DB, _DA, _D9, _D8, _D7, _D6, _D5, _D4, _D3, _D2, _D1, _D0, _CF, _CE, _CD, _CC, _CB, _CA, _C9, _C8, _C7, _C6, _C5, _C4, _C3, _C2, _C1, _C0, _BF, _BE, _BD, _BC, _BB, _BA, _B9, _B8, _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0, _AF, _AE, _AD, _AC, _AB, _AA, _A9, _A8, _A7, _A6, _A5, _A4, _A3, _A2, _A1, _A0, _9F, _9E, _9D, _9C, _9B, _9A, _99, _98, _97, _96, _95, _94, _93, _92, _91, _90, _8F, _8E, _8D, _8C, _8B, _8A, _89, _88, _87, _86, _85, _84, _83, _82, _81, _80, _7F, _7E, _7D, _7C, _7B, _7A, _79, _78, _77, _76, _75, _74, _73, _72, _71, _70, _6F, _6E, _6D, _6C, _6B, _6A, _69, _68, _67, _66, _65, _64, _63, _62, _61, _60, _5F, _5E, _5D, _5C, _5B, _5A, _59, _58, _57, _56, _55, _54, _53, _52, _51, _50, _4F, _4E, _4D, _4C, _4B, _4A, _49, _48, _47, _46, _45, _44, _43, _42, _41, _40, _3F, _3E, _3D, _3C, _3B, _3A, _39, _38, _37, _36, _35, _34, _33, _32, _31, _30, _2F, _2E, _2D, _2C, _2B, _2A, _29, _28, _27, _26, _25, _24, _23, _22, _21, _20, _1F, _1E, _1D, _1C, _1B, _1A, _19, _18, _17, _16, _15, _14, _13, _12, _11, _10, _0F, _0E, _0D, _0C, _0B, _0A, _09, _08, _07, _06, _05, _04, _03, _02, _01, size, ...)   PPUTL_DETAIL_JOIN_REDUCE_CAT(PPUTL_DETAIL_JOIN_REDUCE_, size)
 
#define PPUTL_DETAIL_JOIN_REDUCE_CHOOSER(...)
 

Detailed Description

PPUTL_JOIN_ANY - joins [0, 256) args using a joining function

Macro Definition Documentation

◆ PPUTL_DETAIL_JOIN_REDUCE

#define PPUTL_DETAIL_JOIN_REDUCE (   reducer,
  initial,
  ... 
)
Value:
PPUTL_DETAIL_JOIN_REDUCE_CHOOSER(__VA_ARGS__) \
(reducer, initial, \
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, \
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, \
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, \
57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, \
75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, \
93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, \
109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, \
124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, \
139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, \
154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, \
169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, \
184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, \
199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, \
214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, \
229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, \
244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255)__VA_OPT__(, ) \
__VA_ARGS__)

◆ PPUTL_DETAIL_JOIN_REDUCE_CHOOSER

#define PPUTL_DETAIL_JOIN_REDUCE_CHOOSER (   ...)
Value:
PPUTL_DETAIL_JOIN_REDUCE_CHOICE( \
__VA_ARGS__ __VA_OPT__(, ) FF, FE, FD, FC, FB, FA, F9, F8, F7, F6, F5, \
F4, F3, F2, F1, F0, EF, EE, ED, EC, EB, EA, E9, E8, E7, E6, E5, E4, E3, \
E2, E1, E0, DF, DE, DD, DC, DB, DA, D9, D8, D7, D6, D5, D4, D3, D2, D1, \
D0, CF, CE, CD, CC, CB, CA, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0, BF, \
BE, BD, BC, BB, BA, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0, AF, AE, AD, \
AC, AB, AA, A9, A8, A7, A6, A5, A4, A3, A2, A1, A0, 9F, 9E, 9D, 9C, 9B, \
9A, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 8F, 8E, 8D, 8C, 8B, 8A, 89, \
88, 87, 86, 85, 84, 83, 82, 81, 80, 7F, 7E, 7D, 7C, 7B, 7A, 79, 78, 77, \
76, 75, 74, 73, 72, 71, 70, 6F, 6E, 6D, 6C, 6B, 6A, 69, 68, 67, 66, 65, \
64, 63, 62, 61, 60, 5F, 5E, 5D, 5C, 5B, 5A, 59, 58, 57, 56, 55, 54, 53, \
52, 51, 50, 4F, 4E, 4D, 4C, 4B, 4A, 49, 48, 47, 46, 45, 44, 43, 42, 41, \
40, 3F, 3E, 3D, 3C, 3B, 3A, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 2F, \
2E, 2D, 2C, 2B, 2A, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 1F, 1E, 1D, \
1C, 1B, 1A, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 0F, 0E, 0D, 0C, 0B, \
0A, 09, 08, 07, 06, 05, 04, 03, 02, 01, 00)