Boost C++ Libraries Home Libraries People FAQ More


Chapter 1. The Variadic Macro Data Library 1.7

Edward Diener

Table of Contents

Variadic Macros
Boost support
Determining variadic macro support
Naming conventions
Functional groups
Visual C++
Macro constraints
Data types
Boost PP data types
Identifying data types
Asserting and data types
Parsing v-type sequences
Parsing v-identifiers
Parsing v-identifiers using optional parameters
V-identifiers helper macros
Parsing v-numbers
Parsing v-numbers using optional parameters
V-number helper macros
Parsing Boost PP data
PP-data helper macros
Generating emptiness and identity
Emptiness and Boost PP data types
Boost PP reentrant versions
Input as dynamic types
Visual C++ gotchas in VMD
Variadic Macro Data Reference
Header <boost/vmd/array.hpp>
Header <boost/vmd/assert.hpp>
Header <boost/vmd/empty.hpp>
Header <boost/vmd/identifier.hpp>
Header <boost/vmd/identity.hpp>
Header <boost/vmd/is_begin_tuple.hpp>
Header <boost/vmd/is_empty.hpp>
Header <boost/vmd/is_identifier.hpp>
Header <boost/vmd/is_number.hpp>
Header <boost/vmd/is_parens_empty.hpp>
Header <boost/vmd/list.hpp>
Header <boost/vmd/number.hpp>
Header <boost/vmd/seq.hpp>
Header <boost/vmd/tuple.hpp>

Welcome to version 1.7 of the Variadic Macro Data library.

The Variadic Macro Data library, referred to hereafter as VMD for short, is a library of variadic macros which provide enhancements to the functionality in the Boost preprocessor library ( Boost PP ), especially as it relates to preprocessor "data types".

The functionality of the library may be summed up as:

  1. Provide a better way of testing for and using empty parameters and empty preprocessor data.
  2. Provide ways for testing/parsing for identifiers, numbers, tuples, arrays, lists. and seqs.
  3. Provide ways for testing/parsing sequences of identifiers, numbers, tuples, arrays, lists. and seqs.
  4. Provide some useful variadic macros not in Boost PP.

The library is a header only library and all macros in the library are included by a single header, whose name is 'vmd.hpp'. Individual headers may be used for different functionality in the library and will be denoted when that functionality is explained.

All the macros in the library begin with the sequence 'BOOST_VMD_' to distinguish them from other macros the end-user might use. Therefore the end-user should not use any C++ identifiers, whether in macros or otherwise, which being with the sequence 'BOOST_VMD_'.

Use of the library is only dependent on Boost PP. The library also uses Boost detail lightweight_test.hpp for its own tests. The library currently depends on the 'develop' branch of the Boost PP library in the modular boost structure. Once Boost 1.56 is released the 'develop' branch of Boost PP in modular-boost will be merged to the 'master' branch.

The library is NOT a Boost library but it is in the Boost review queue and is eagerly looking for a review manager. Please contact Edward Diener at if you are interested as serving as the review manager for the library.


Last revised: August 22, 2014 at 18:18:10 GMT