BOOST_PP_LIST_FOR_EACH_PRODUCT 宏为多个列表的每个笛卡尔积重复一个宏。

用法

BOOST_PP_LIST_FOR_EACH_PRODUCT(, 大小, 元组)

参数

形如 (r, ) 的二元宏。此宏由 BOOST_PP_FOR_EACH_PRODUCT元组 中的每个笛卡尔积展开。它会使用下一个可用的 BOOST_PP_FOR 重复以及包含笛卡尔积的元组进行展开。这个元组将具有 大小 个元素。
大小
元组 的大小。
元组
从中获取笛卡尔积的列表元组

说明

此宏是一个重复构造。 如果两个列表是 (a, (b, (c, BOOST_PP_NIL))) 和 (x, (y, (z, BOOST_PP_NIL))),则此宏将产生以下序列
(r, (a, x)) (r, (a, y)) (r, (a, z))
(r, (b, x)) (r, (b, y)) (r, (b, z))
(r, (c, x)) (r, (c, y)) (r, (c, z))
以前,此宏不能在 BOOST_PP_FOR 内使用。 现在没有这样的限制。 但是,在这种情况下,使用 BOOST_PP_LIST_FOR_EACH_PRODUCT_R 会更有效率。

另请参阅

要求

头文件:  <boost/preprocessor/list/for_each_product.hpp>

示例代码

#include <boost/preprocessor/list/for_each_product.hpp>

#define L1 (a, (b, (c, BOOST_PP_NIL)))
#define L2 (x, (y, (z, BOOST_PP_NIL)))

#define MACRO(r, product) product

BOOST_PP_LIST_FOR_EACH_PRODUCT(MACRO, 2, (L1, L2))
   // expands to (a, x) (a, y) (a, z) (b, x) (b, y) (b, z) (c, x) (c, y) (c, z)

� 版权所有 Housemarque Oy 2002
� 版权所有 Paul Mensonides 2002

在 Boost 软件许可版本 1.0 下分发。(参见随附文件 LICENSE_1_0.txt 或在 www.boost.org/LICENSE_1_0.txt 上的副本)