[/ (C) Copyright Edward Diener 2011-2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt). ] [section:vmd_reentrant Boost PP re-entrant versions] Nearly all macros in VMD have equivalent reentrant versions which are meant to be used in a BOOST_PP_WHILE loop. These are versions which have an underscore D suffix, take the next available BOOST_PP_WHILE iteration as their first parameter, and then have the exact same functionality as their unsuffixed equivalents. They can be used in BOOST_PP_WHILE loops to provide slightly quicker preprocessing but, as the documentation for BOOST_PP_WHILE and BOOST_PP_WHILE_##d explain, they do not have to be used. These macros are: Arrays * BOOST_VMD_IS_ARRAY_D * BOOST_VMD_IS_EMPTY_ARRAY_D * BOOST_VMD_ASSERT_IS_ARRAY_D Identifiers * BOOST_VMD_IS_IDENTIFIER_D * BOOST_VMD_ASSERT_IS_IDENTIFIER_D Lists * BOOST_VMD_IS_LIST_D * BOOST_VMD_IS_EMPTY_LIST_D * BOOST_VMD_ASSERT_IS_LIST_D Sequences * BOOST_VMD_ELEM_D * BOOST_VMD_ENUM_D * BOOST_VMD_EQUAL_D * BOOST_VMD_GET_TYPE_D * BOOST_VMD_IS_MULTI_D * BOOST_VMD_IS_UNARY_D * BOOST_VMD_NOT_EQUAL_D * BOOST_VMD_SIZE_D * BOOST_VMD_TO_ARRAY_D * BOOST_VMD_TO_LIST_D * BOOST_VMD_TO_SEQ_D * BOOST_VMD_TO_TUPLE_D Seqs * BOOST_VMD_IS_SEQ_D * BOOST_VMD_ASSERT_IS_SEQ_D Types * BOOST_VMD_IS_TYPE_D * BOOST_VMD_ASSERT_IS_TYPE_D Other * BOOST_VMD_IS_PARENS_EMPTY_D [endsect]