#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)
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)