...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
BOOST_VMD_IS_IDENTIFIER — Tests whether a parameter is an identifier.
// In header: <boost/vmd/is_identifier.hpp>
BOOST_VMD_IS_IDENTIFIER(...)
... = variadic parameters
The first variadic parameter is required and it is the input to test.
Further variadic parameters are optional and are identifiers to match. The data may take one of two forms; it is either one or more single identifiers or a single Boost PP tuple of identifiers.
returns = 1 if the parameter is an identifier, otherwise 0. If the parameter is not an identifier, or if optional identifiers are specified and the identifier does not match any of the optional identifiers, the macro returns 0.
Identifiers are registered in VMD with:
#define BOOST_VMD_REG_XXX (XXX) where XXX is a v-identifier.
The identifier must be registered to be found.
Identifiers are pre-detected in VMD with:
#define BOOST_VMD_DETECT_XXX_XXX where XXX is an identifier.
If you specify optional identifiers and have not specified the detection of an optional identifier, that optional identifier will never match the input.
If the input is not a VMD data type this macro could lead to a preprocessor error. This is because the macro uses preprocessor concatenation to determine if the input is an identifier once it is determined that the input does not start with parenthesis. If the data being concatenated would lead to an invalid preprocessor token the compiler can issue a preprocessor error.