1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Determine if a Type is a Character</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="Spirit 2.5.8"> 8<link rel="up" href="../string_traits.html" title="Extract a C-Style String to Generate Output from a String Type (Karma)"> 9<link rel="prev" href="../string_traits.html" title="Extract a C-Style String to Generate Output from a String Type (Karma)"> 10<link rel="next" href="char_type_of.html" title="Determine the Character Type of a String"> 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="../string_traits.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string_traits.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="char_type_of.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h5 class="title"> 27<a name="spirit.advanced.customize.string_traits.is_char"></a><a class="link" href="is_char.html" title="Determine if a Type is a Character">Determine 28 if a Type is a Character</a> 29</h5></div></div></div> 30<h6> 31<a name="spirit.advanced.customize.string_traits.is_char.h0"></a> 32 <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.is_char"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.is_char">is_char</a> 33 </h6> 34<p> 35 <code class="computeroutput"><span class="identifier">is_char</span></code> is a metafunction 36 that detects if a given type is a character. 37 </p> 38<h6> 39<a name="spirit.advanced.customize.string_traits.is_char.h1"></a> 40 <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.module_headers"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.module_headers">Module 41 Headers</a> 42 </h6> 43<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">string_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 44</pre> 45<p> 46 Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>. 47 </p> 48<div class="note"><table border="0" summary="Note"> 49<tr> 50<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td> 51<th align="left">Note</th> 52</tr> 53<tr><td align="left" valign="top"><p> 54 This header file does not need to be included directly by any user 55 program as it is normally included by other Spirit header files relying 56 on its content. 57 </p></td></tr> 58</table></div> 59<h6> 60<a name="spirit.advanced.customize.string_traits.is_char.h2"></a> 61 <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.namespace"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.namespace">Namespace</a> 62 </h6> 63<div class="informaltable"><table class="table"> 64<colgroup><col></colgroup> 65<thead><tr><th> 66 <p> 67 Name 68 </p> 69 </th></tr></thead> 70<tbody><tr><td> 71 <p> 72 <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></code> 73 </p> 74 </td></tr></tbody> 75</table></div> 76<h6> 77<a name="spirit.advanced.customize.string_traits.is_char.h3"></a> 78 <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.synopsis"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.synopsis">Synopsis</a> 79 </h6> 80<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> 81<span class="keyword">struct</span> <span class="identifier">is_char</span> 82<span class="special">{</span> 83 <span class="special"><</span><span class="identifier">unspecified</span><span class="special">>;</span> 84<span class="special">};</span> 85</pre> 86<h6> 87<a name="spirit.advanced.customize.string_traits.is_char.h4"></a> 88 <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.template_parameters"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.template_parameters">Template 89 parameters</a> 90 </h6> 91<div class="informaltable"><table class="table"> 92<colgroup> 93<col> 94<col> 95<col> 96</colgroup> 97<thead><tr> 98<th> 99 <p> 100 Parameter 101 </p> 102 </th> 103<th> 104 <p> 105 Description 106 </p> 107 </th> 108<th> 109 <p> 110 Default 111 </p> 112 </th> 113</tr></thead> 114<tbody><tr> 115<td> 116 <p> 117 <code class="computeroutput"><span class="identifier">T</span></code> 118 </p> 119 </td> 120<td> 121 <p> 122 The type to detect. 123 </p> 124 </td> 125<td> 126 <p> 127 none 128 </p> 129 </td> 130</tr></tbody> 131</table></div> 132<div class="variablelist"> 133<p class="title"><b>Notation</b></p> 134<dl class="variablelist"> 135<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span></code></span></dt> 136<dd><p> 137 An arbitrary type 138 </p></dd> 139</dl> 140</div> 141<h6> 142<a name="spirit.advanced.customize.string_traits.is_char.h5"></a> 143 <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.expression_semantics"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.expression_semantics">Expression 144 Semantics</a> 145 </h6> 146<div class="informaltable"><table class="table"> 147<colgroup> 148<col> 149<col> 150</colgroup> 151<thead><tr> 152<th> 153 <p> 154 Expression 155 </p> 156 </th> 157<th> 158 <p> 159 Semantics 160 </p> 161 </th> 162</tr></thead> 163<tbody><tr> 164<td> 165 <p> 166 <code class="computeroutput"><span class="identifier">is_char</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span></code> 167 </p> 168 </td> 169<td> 170 <p> 171 <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> if T should be treated 172 as a character type, and <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code> 173 otherwise. Generally, any implementation of <code class="computeroutput"><span class="identifier">is_char</span></code> 174 needs to behave as if if was a <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL 175 Boolean Constant</a>. 176 </p> 177 </td> 178</tr></tbody> 179</table></div> 180<h6> 181<a name="spirit.advanced.customize.string_traits.is_char.h6"></a> 182 <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.predefined_specializations"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.predefined_specializations">Predefined 183 Specializations</a> 184 </h6> 185<div class="informaltable"><table class="table"> 186<colgroup> 187<col> 188<col> 189</colgroup> 190<thead><tr> 191<th> 192 <p> 193 Type 194 </p> 195 </th> 196<th> 197 <p> 198 Semantics 199 </p> 200 </th> 201</tr></thead> 202<tbody> 203<tr> 204<td> 205 <p> 206 <code class="computeroutput"><span class="identifier">T</span></code> 207 </p> 208 </td> 209<td> 210 <p> 211 <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code> 212 </p> 213 </td> 214</tr> 215<tr> 216<td> 217 <p> 218 <code class="computeroutput"><span class="identifier">T</span> <span class="keyword">const</span></code> 219 </p> 220 </td> 221<td> 222 <p> 223 <code class="computeroutput"><span class="identifier">is_char</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> 224 </p> 225 </td> 226</tr> 227<tr> 228<td> 229 <p> 230 <code class="computeroutput"><span class="keyword">char</span></code> 231 </p> 232 </td> 233<td> 234 <p> 235 <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> 236 </p> 237 </td> 238</tr> 239<tr> 240<td> 241 <p> 242 <code class="computeroutput"><span class="keyword">wchar_t</span></code> 243 </p> 244 </td> 245<td> 246 <p> 247 <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> 248 </p> 249 </td> 250</tr> 251</tbody> 252</table></div> 253<h6> 254<a name="spirit.advanced.customize.string_traits.is_char.h7"></a> 255 <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.when_to_implement"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.when_to_implement">When 256 to implement</a> 257 </h6> 258<p> 259 This customization point needs to be implemented for any strings that 260 use a type other than <code class="computeroutput"><span class="keyword">char</span></code> 261 or `wchar_t to store character data. 262 </p> 263<h6> 264<a name="spirit.advanced.customize.string_traits.is_char.h8"></a> 265 <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.related_attribute_customization_points"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.related_attribute_customization_points">Related 266 Attribute Customization Points</a> 267 </h6> 268<p> 269 If this customization point is implemented, the following other customization 270 points need to be implemented as well. 271 </p> 272<div class="informaltable"><table class="table"> 273<colgroup> 274<col> 275<col> 276</colgroup> 277<thead><tr> 278<th> 279 <p> 280 Name 281 </p> 282 </th> 283<th> 284 <p> 285 When to implement 286 </p> 287 </th> 288</tr></thead> 289<tbody> 290<tr> 291<td> 292 <p> 293 <a class="link" href="../is_string.html" title="Determine if a Type Should be Treated as a String (Qi and Karma)"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_string</span></code></a> 294 </p> 295 </td> 296<td> 297 <p> 298 Whenever <code class="computeroutput"><span class="identifier">is_char</span></code> 299 is implemented. 300 </p> 301 </td> 302</tr> 303<tr> 304<td> 305 <p> 306 <a class="link" href="char_type_of.html" title="Determine the Character Type of a String"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">char_type_of</span></code></a> 307 </p> 308 </td> 309<td> 310 <p> 311 Whenever <code class="computeroutput"><span class="identifier">is_char</span></code> 312 is implemented. 313 </p> 314 </td> 315</tr> 316</tbody> 317</table></div> 318</div> 319<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 320<td align="left"></td> 321<td align="right"><div class="copyright-footer">Copyright © 2001-2011 Joel de Guzman, Hartmut Kaiser<p> 322 Distributed under the Boost Software License, Version 1.0. (See accompanying 323 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) 324 </p> 325</div></td> 326</tr></table> 327<hr> 328<div class="spirit-nav"> 329<a accesskey="p" href="../string_traits.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string_traits.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="char_type_of.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a> 330</div> 331</body> 332</html> 333