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

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)