The BOOST_PP_EXPAND macro performs a double macro-expansion on its argument.
Usage
BOOST_PP_EXPAND(x)
Arguments
- x
-
The argument to be expanded twice.
Remarks
This macro is useful when a delay is necessary to produce the correct semantics of a macro invocation.
For example, when a macro expands to an argument list to another macro.
This macro will expand the the argument list on the first pass, and then rescan to expand any more macros.
Requirements
Sample Code
#include <boost/preprocessor/control/if.hpp>
#include <boost/preprocessor/facilities/expand.hpp>
#define MACRO(a, b, c) (a)(b)(c)
#define ARGS() (1, 2, 3)
BOOST_PP_EXPAND(MACRO ARGS()) // expands to (1)(2)(3)
#define SAMPLE(n) \
BOOST_PP_EXPAND( \
MACRO \
BOOST_PP_IF( \
n, \
(x, y, z), \
(a, b, c) \
) \
) \
/**/
SAMPLE(0) // expands to (a)(b)(c)
SAMPLE(1) // expands to (x)(y)(z)