The BOOST_PP_LIST_FOLD_RIGHT_2ND macro folds (or accumulates) the elements of a list right-to-left.


BOOST_PP_LIST_FOLD_RIGHT_2ND(op, state, list)


A ternary operation of the form op(d, state, elem).  This macro is called for each element in list--each time returning a new state.  This operation is expanded by BOOST_PP_LIST_FOLD_RIGHT with the next available BOOST_PP_WHILE iteration, the current state, and the current element.
The initial state of the fold.
The list to be folded.


This macro does not have the same signature as it previously did.  The arguments have been swapped to provide a uniform interface with BOOST_PP_LIST_FOLD_LEFT.
For the list, (0, (1, (2, BOOST_PP_NIL))), this macro expands to:
op(d, op(d, op(d, state, 0), 1), 2)
This macro is deprecated.  Use BOOST_PP_LIST_FOLD_RIGHT_d instead.

See Also


Header:  <boost/preprocessor/list/fold_right.hpp>

Sample Code

#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/list/fold_right.hpp>

#define LIST (a, (b, (c, BOOST_PP_NIL)))

#define OP(d, state, x) BOOST_PP_CAT(state, x)

BOOST_PP_LIST_FOLD_RIGHT_2ND(OP, _, LIST) // expands to _cba

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