BOOST_PP_SEQ_SIZE还可以展示一下,BEGIN BOOST_PP_SEQ_FOLD_LEFT(SUB_S, 22, SEQ) == 10 END直接生产了2.6M的log过程。
# define SEQ (4)(1)(5)(2)
开始处理代码:
BOOST_PP_SEQ_SIZE(SEQ)
//----------------------------------------
开始展开函数宏:
@@@@ BOOST_PP_SEQ_SIZE(SEQ) @@
//----------------------------------------
对实参
SEQ
进行展开
//----------------------------------------
开始处理代码:
SEQ
//----------------------------------------
开始展开对象宏:
@@@@ SEQ @@
//----------------------------------------
对象宏
SEQ
进行直接替换,结果为:
(4)(1)(5)(2)
//----------------------------------------
开始处理代码:
(4)(1)(5)(2)
//----------------------------------------
对代码
(4)(1)(5)(2)
宏替换的最终结果为:
(4)(1)(5)(2)
//----------------------------------------
对象宏
SEQ
展开的最终结果为:
(4)(1)(5)(2)
//----------------------------------------
对代码
SEQ
宏替换的最终结果为:
(4)(1)(5)(2)
//----------------------------------------
实参
SEQ
展开的最终结果:
(4)(1)(5)(2)
//----------------------------------------
函数宏的调用
BOOST_PP_SEQ_SIZE(SEQ)
对宏体
BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq)
进行实参替换的结果为:
BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))
//----------------------------------------
开始处理代码:
BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))
//----------------------------------------
开始展开函数宏:
@@@@ BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2)) @@
//----------------------------------------
对实参
BOOST_PP_SEQ_SIZE_
进行展开
//----------------------------------------
开始处理代码:
BOOST_PP_SEQ_SIZE_
//----------------------------------------
对代码
BOOST_PP_SEQ_SIZE_
宏替换的最终结果为:
BOOST_PP_SEQ_SIZE_
//----------------------------------------
实参
BOOST_PP_SEQ_SIZE_
展开的最终结果:
BOOST_PP_SEQ_SIZE_
//----------------------------------------
对实参
BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2)
进行展开
//----------------------------------------
开始处理代码:
BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2)
//----------------------------------------
开始展开函数宏:
@@@@ BOOST_PP_SEQ_SIZE_0 (4) @@ (1)(5)(2)
//----------------------------------------
函数宏的调用
BOOST_PP_SEQ_SIZE_0(4)
对宏体
BOOST_PP_SEQ_SIZE_1
进行实参替换的结果为:
BOOST_PP_SEQ_SIZE_1
//----------------------------------------
开始处理代码:
BOOST_PP_SEQ_SIZE_1
//----------------------------------------
对代码
BOOST_PP_SEQ_SIZE_1
宏替换的最终结果为:
BOOST_PP_SEQ_SIZE_1
//----------------------------------------
开始展开函数宏:
@@@@ BOOST_PP_SEQ_SIZE_1
(1) @@ (5)(2)
//----------------------------------------
函数宏的调用
BOOST_PP_SEQ_SIZE_1(1)
对宏体
BOOST_PP_SEQ_SIZE_2
进行实参替换的结果为:
BOOST_PP_SEQ_SIZE_2
//----------------------------------------
开始处理代码:
BOOST_PP_SEQ_SIZE_2
//----------------------------------------
对代码
BOOST_PP_SEQ_SIZE_2
宏替换的最终结果为:
BOOST_PP_SEQ_SIZE_2
//----------------------------------------
开始展开函数宏:
@@@@ BOOST_PP_SEQ_SIZE_2
(5) @@ (2)
//----------------------------------------
函数宏的调用
BOOST_PP_SEQ_SIZE_2(5)
对宏体
BOOST_PP_SEQ_SIZE_3
进行实参替换的结果为:
BOOST_PP_SEQ_SIZE_3
//----------------------------------------
开始处理代码:
BOOST_PP_SEQ_SIZE_3
//----------------------------------------
对代码
BOOST_PP_SEQ_SIZE_3
宏替换的最终结果为:
BOOST_PP_SEQ_SIZE_3
//----------------------------------------
开始展开函数宏:
@@@@ BOOST_PP_SEQ_SIZE_3
(2) @@
//----------------------------------------
函数宏的调用
BOOST_PP_SEQ_SIZE_3(2)
对宏体
BOOST_PP_SEQ_SIZE_4
进行实参替换的结果为:
BOOST_PP_SEQ_SIZE_4
//----------------------------------------
开始处理代码:
BOOST_PP_SEQ_SIZE_4
//----------------------------------------
对代码
BOOST_PP_SEQ_SIZE_4
宏替换的最终结果为:
BOOST_PP_SEQ_SIZE_4
//----------------------------------------
对代码
BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2)
宏替换的最终结果为:
BOOST_PP_SEQ_SIZE_4
//----------------------------------------
实参
BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2)
展开的最终结果:
BOOST_PP_SEQ_SIZE_4
//----------------------------------------
函数宏的调用
BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))
对宏体
BOOST_PP_CAT_I(a, b)
进行实参替换的结果为:
BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)
//----------------------------------------
开始处理代码:
BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)
//----------------------------------------
开始展开函数宏:
@@@@ BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4) @@
//----------------------------------------
函数宏的调用
BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)
对宏体
a ## b
进行实参替换的结果为:
BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4
//----------------------------------------
开始处理代码:
BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4
//----------------------------------------
开始展开对象宏:
@@@@ BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4 @@
//----------------------------------------
对象宏
BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4
进行直接替换,结果为:
4
//----------------------------------------
开始处理代码:
4
//----------------------------------------
对代码
4
宏替换的最终结果为:
4
//----------------------------------------
对象宏
BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4
展开的最终结果为:
4
//----------------------------------------
对代码
BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4
宏替换的最终结果为:
4
//----------------------------------------
函数宏的调用
BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)
展开的最终结果为:
BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4
//----------------------------------------
对代码
BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)
宏替换的最终结果为:
4
//----------------------------------------
函数宏的调用
BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))
展开的最终结果为:
BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)
//----------------------------------------
对代码
BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))
宏替换的最终结果为:
4
//----------------------------------------
函数宏的调用
BOOST_PP_SEQ_SIZE(SEQ)
展开的最终结果为:
BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))
//----------------------------------------
对代码
BOOST_PP_SEQ_SIZE(SEQ)
宏替换的最终结果为:
4