[ create a new paste ] login | about

Link: http://codepad.org/lnjgmjgD    [ raw code | output | fork ]

DigitalGhost - C++, pasted on Jan 1:
#include <iostream>
#include <boost/preprocessor/cat.hpp>

#define PP_ADD_C(x, y) PP_ADD_C_I(x, y)
#define PP_ADD_C_I(x, y) \
    PP_ADD_C_II(BOOST_PP_CAT(PP_ADD_C_, x)(BOOST_PP_CAT(PP_ADD_C_, y)(COUNT)))
#define PP_ADD_C_II(res) PP_ADD_C_III(res)
#define PP_ADD_C_III(res, ...) res

#define PP_ADD_C_1(x) PP_ADD_C_1_I(x)
#define PP_ADD_C_2(x) PP_ADD_C_2_I(x)
#define PP_ADD_C_3(x) PP_ADD_C_3_I(x)
#define PP_ADD_C_4(x) PP_ADD_C_4_I(x)
#define PP_ADD_C_5(x) PP_ADD_C_5_I(x)
#define PP_ADD_C_6(x) PP_ADD_C_6_I(x)
#define PP_ADD_C_7(x) PP_ADD_C_7_I(x)
#define PP_ADD_C_8(x) PP_ADD_C_8_I(x)
#define PP_ADD_C_9(x) PP_ADD_C_9_I(x)
#define PP_ADD_C_10(x) PP_ADD_C_10_I(x)
#define PP_ADD_C_11(x) PP_ADD_C_11_I(x)
#define PP_ADD_C_12(x) PP_ADD_C_12_I(x)
#define PP_ADD_C_13(x) PP_ADD_C_13_I(x)
#define PP_ADD_C_14(x) PP_ADD_C_14_I(x)
#define PP_ADD_C_15(x) PP_ADD_C_15_I(x)

#define PP_ADD_C_0_I(...) __VA_ARGS__
#define PP_ADD_C_1_I(_0, ...) __VA_ARGS__
#define PP_ADD_C_2_I(_0, _1, ...) __VA_ARGS__
#define PP_ADD_C_3_I(_0, _1, _2, ...) __VA_ARGS__
#define PP_ADD_C_4_I(_0, _1, _2, _3, ...) __VA_ARGS__
#define PP_ADD_C_5_I(_0, _1, _2, _3, _4, ...) __VA_ARGS__
#define PP_ADD_C_6_I(_0, _1, _2, _3, _4, _5, ...) __VA_ARGS__
#define PP_ADD_C_7_I(_0, _1, _2, _3, _4, _5, _6, ...) __VA_ARGS__
#define PP_ADD_C_8_I(_0, _1, _2, _3, _4, _5, _6, _7, ...) __VA_ARGS__
#define PP_ADD_C_9_I(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) __VA_ARGS__
#define PP_ADD_C_10_I(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) __VA_ARGS__
#define PP_ADD_C_11_I(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) __VA_ARGS__
#define PP_ADD_C_12_I(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) __VA_ARGS__
#define PP_ADD_C_13_I(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) __VA_ARGS__
#define PP_ADD_C_14_I(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) __VA_ARGS__
#define PP_ADD_C_15_I(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) __VA_ARGS__

#define COUNT 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

int main() {
    std::cout << PP_ADD_C(PP_ADD_C(1,2),3) << '\n';
}


Output:
1
6


Create a new paste based on this one


Comments: