[/ 
  (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]
