[/ 
  (C) Copyright Edward Diener 2020
  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_gnctable Summing up the generic macros]

The VMD generic macros work with VMD sequences, which represent any VMD data. The macros are represented by this table:

[table:tgenm Generic sequence macros
[[Name][Function]]
[[BOOST_VMD_IS_EMPTY][Tests if the sequence is empty]]
[[BOOST_VMD_IS_UNARY][Tests if the sequence has a single element]]
[[BOOST_VMD_IS_MULTI][Tests if the sequence has more than one element]]
[[BOOST_VMD_SIZE][Returns the number of elements in the sequence]]
[[BOOST_VMD_TO_ARRAY][Converts a sequence to a Boost PP array]]
[[BOOST_VMD_TO_LIST][Converts a sequence to a Boost PP list]]
[[BOOST_VMD_TO_SEQ][Converts a sequence to a Boost PP seq]]
[[BOOST_VMD_TO_TUPLE][Converts a sequence to a Boost PP tuple]]
[[BOOST_VMD_ENUM][Converts a sequence to variadic data]]
[[BOOST_VMD_ELEM][Returns a sequence element]]
[[BOOST_VMD_GET_TYPE][Returns the type of a sequence]]
[[BOOST_VMD_EQUAL][Tests two sequences for equality]]
[[BOOST_VMD_NOT_EQUAL][Tests two sequences for inequality]]
]

* For all generic macros the top-level data types must be VMD data types.
* For the BOOST_VMD_EQUAL and BOOST_VMD_NOT_EQUAL macros all data types must be VMD data types
* Except for the BOOST_VMD_IS_EMPTY macro, which is really a specific macro which also works generically with sequences, identifiers must be specific identifiers,
  ie. identifiers must be registered to be used with generic macros and sequences. For the BOOST_VMD_EQUAL and BOOST_VMD_NOT_EQUAL macros
  specific identifiers must also be pre-detected.
  
[endsect]