![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
BOOST_PP_SEQ_FOR_EACH_PRODUCTBoost , ,
The BOOST_PP_SEQ_FOR_EACH_PRODUCT macro repeats a macro for each
cartesian product of several seqs.
Usage
BOOST_PP_SEQ_FOR_EACH_PRODUCT(macro, seqs)
Arguments
Remarks
This macro is a repetition construct. If two seqs are (a)(b)(c)
and (x)(y)(z), this macro will produce the following
sequence:
macro(r, (a)(x)) macro(r, (a)(y))
macro(r, (a)(z)) \
macro(r, (b)(x)) macro(r, (b)(y)) macro(r, (b)(z)) \ macro(r, (c)(x)) macro(r, (c)(y)) macro(r, (c)(z))
For maximum efficiency, use BOOST_PP_SEQ_FOR_EACH_PRODUCT_R.
See AlsoRequirementsSample Code#include <boost/preprocessor/seq/for_each_product.hpp> #include <boost/preprocessor/seq/to_tuple.hpp> #define S1 (a)(b)(c) #define S2 (x)(y)(z) #define S3 (p)(q) #define MACRO(r, product) BOOST_PP_SEQ_TO_TUPLE(product) BOOST_PP_SEQ_FOR_EACH_PRODUCT(MACRO, (S1)(S2)(S3)) // expands to: // (a, x, p) (a, x, q) (a, y, p) (a, y, q) (a, z, p) (a, z, q) // (b, x, p) (b, x, q) (b, y, p) (b, y, q) (b, z, p) (b, z, q) // (c, x, p) (c, x, q) (c, y, p) (c, y, q) (c, z, p) (c, z, q)
© Copyright Housemarque Oy 2002
© Copyright Paul Mensonides 2002
Распространяется в соответствии с Лицензией на программное обеспечение Boost, версия 1.0. (См. сопроводительный файл)LICENSE_1_0.txtили копия наwww.boost.org/LICENSE_1_0.txt Статья BOOST_PP_SEQ_FOR_EACH_PRODUCT раздела может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |