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