3rdParty/boost/1.78.0/libs/preprocessor/doc/ref/expand.html
The BOOST_PP_EXPAND macro performs a double macro-expansion on its argument.
BOOST_PP_EXPAND (x)
x The argument to be expanded twice.
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 argument list on the first pass, and then rescan to expand any more macros.
Header: <boost/preprocessor/facilities/expand.hpp>
#include <[boost/preprocessor/control/if.hpp](../headers/control/if.html)>
#include <[boost/preprocessor/facilities/expand.hpp](../headers/facilities/expand.html)>
#define MACRO(a, b, c) (a)(b)(c)
#define ARGS() (1, 2, 3)[BOOST\_PP\_EXPAND](expand.html)(MACRO ARGS()) // expands to (1)(2)(3)
#define SAMPLE(n) \[BOOST\_PP\_EXPAND](expand.html)( \
MACRO \[BOOST\_PP\_IF](if.html)( \
n, \
(x, y, z), \
(a, b, c) \
) \
) \
/**/
SAMPLE(0) // expands to (a)(b)(c)
SAMPLE(1) // expands to (x)(y)(z)
Copyright Housemarque Oy 2002 Copyright Paul Mensonides 2002
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt)