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 argument list on the first pass, and then rescan to expand any more macros.

Requirements

Header:  <boost/preprocessor/facilities/expand.hpp>

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)

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)