1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Macro BOOST_VMD_IS_IDENTIFIER_D</title> 5<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.9"> 8<link rel="up" href="header/boost/vmd/is_identifier_hpp.html" title="Header <boost/vmd/is_identifier.hpp>"> 9<link rel="prev" href="BOOST_VMD_IS_IDENTIFIER.html" title="Macro BOOST_VMD_IS_IDENTIFIER"> 10<link rel="next" href="header/boost/vmd/is_list_hpp.html" title="Header <boost/vmd/is_list.hpp>"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td> 15<td align="center"><a href="../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<a accesskey="p" href="BOOST_VMD_IS_IDENTIFIER.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="header/boost/vmd/is_identifier_hpp.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="header/boost/vmd/is_list_hpp.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="refentry"> 26<a name="BOOST_VMD_IS_IDENTIFIER_D"></a><div class="titlepage"></div> 27<div class="refnamediv"> 28<h2><span class="refentrytitle">Macro BOOST_VMD_IS_IDENTIFIER_D</span></h2> 29<p>BOOST_VMD_IS_IDENTIFIER_D — Tests whether a parameter is an identifier. Re-entrant version. </p> 30</div> 31<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> 32<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="header/boost/vmd/is_identifier_hpp.html" title="Header <boost/vmd/is_identifier.hpp>">boost/vmd/is_identifier.hpp</a>> 33 34</span>BOOST_VMD_IS_IDENTIFIER_D(d, ...)</pre></div> 35<div class="refsect1"> 36<a name="idm46219107702048"></a><h2>Description</h2> 37<p>d = The next available BOOST_PP_WHILE iteration. <br> 38 ... = variadic parameters</p> 39<p>The first variadic parameter is required and it is the input to test.</p> 40<p>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.</p> 41<pre class="programlisting"><span class="identifier">returns</span> <span class="special">=</span> <span class="number">1</span> <span class="keyword">if</span> <span class="identifier">the</span> <span class="identifier">parameter</span> <span class="identifier">is</span> <span class="identifier">an</span> <span class="identifier">identifier</span><span class="special">,</span> <span class="identifier">otherwise</span> <span class="number">0</span><span class="special">.</span> 42 43 <span class="identifier">If</span> <span class="identifier">the</span> <span class="identifier">parameter</span> <span class="identifier">is</span> <span class="identifier">not</span> <span class="identifier">an</span> <span class="identifier">identifier</span><span class="special">,</span> 44 <span class="identifier">or</span> <span class="keyword">if</span> <span class="identifier">optional</span> <span class="identifier">identifiers</span> <span class="identifier">are</span> <span class="identifier">specified</span> <span class="identifier">and</span> <span class="identifier">the</span> <span class="identifier">identifier</span> 45 <span class="identifier">does</span> <span class="identifier">not</span> <span class="identifier">match</span> <span class="identifier">any</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">optional</span> <span class="identifier">identifiers</span><span class="special">,</span> <span class="identifier">the</span> <span class="identifier">macro</span> <span class="identifier">returns</span> <span class="number">0</span><span class="special">.</span> 46</pre> 47<p>Identifiers are registered in VMD with:</p> 48<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_VMD_REG_XXX</span> <span class="special">(</span><span class="identifier">XXX</span><span class="special">)</span> <span class="identifier">where</span> <span class="identifier">XXX</span> <span class="identifier">is</span> <span class="identifier">a</span> <span class="identifier">v</span><span class="special">-</span><span class="identifier">identifier</span><span class="special">.</span> 49</pre> 50<p>The identifier must be registered to be found.</p> 51<p>Identifiers are pre-detected in VMD with:</p> 52<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_VMD_DETECT_XXX_XXX</span> <span class="identifier">where</span> <span class="identifier">XXX</span> <span class="identifier">is</span> <span class="identifier">an</span> <span class="identifier">identifier</span><span class="special">.</span> 53</pre> 54<p>If you specify optional identifiers and have not specified the detection of an optional identifier, that optional identifier will never match the input.</p> 55<p>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. </p> 56</div> 57</div> 58<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 59<td align="left"></td> 60<td align="right"><div class="copyright-footer">Copyright © 2010-2017 Tropic Software 61 East Inc</div></td> 62</tr></table> 63<hr> 64<div class="spirit-nav"> 65<a accesskey="p" href="BOOST_VMD_IS_IDENTIFIER.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="header/boost/vmd/is_identifier_hpp.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="header/boost/vmd/is_list_hpp.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> 66</div> 67</body> 68</html> 69