ext_compile_checks.html revision 1.1.1.4
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter��16.��Compile Time Checks</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part��III.�� Extensions" /><link rel="prev" href="ext_preface.html" title="" /><link rel="next" href="debug_mode.html" title="Chapter��17.��Debug Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter��16.��Compile Time Checks</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_preface.html">Prev</a>��</td><th width="60%" align="center">Part��III.�� 3 Extensions 4 5</th><td width="20%" align="right">��<a accesskey="n" href="debug_mode.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.compile_checks"></a>Chapter��16.��Compile Time Checks</h2></div></div></div><p> 6 Also known as concept checking. 7 </p><p>In 1999, SGI added <span class="emphasis"><em>concept checkers</em></span> to their implementation 8 of the STL: code which checked the template parameters of 9 instantiated pieces of the STL, in order to insure that the parameters 10 being used met the requirements of the standard. For example, 11 the Standard requires that types passed as template parameters to 12 <code class="code">vector</code> be <span class="quote">���<span class="quote">Assignable</span>���</span> (which means what you think 13 it means). The checking was done during compilation, and none of 14 the code was executed at runtime. 15 </p><p>Unfortunately, the size of the compiler files grew significantly 16 as a result. The checking code itself was cumbersome. And bugs 17 were found in it on more than one occasion. 18 </p><p>The primary author of the checking code, Jeremy Siek, had already 19 started work on a replacement implementation. The new code has been 20 formally reviewed and accepted into 21 <a class="link" href="http://www.boost.org/libs/concept_check/concept_check.htm" target="_top">the 22 Boost libraries</a>, and we are pleased to incorporate it into the 23 GNU C++ library. 24 </p><p>The new version imposes a much smaller space overhead on the generated 25 object file. The checks are also cleaner and easier to read and 26 understand. 27 </p><p>They are off by default for all versions of GCC from 3.0 to 3.4 (the 28 latest release at the time of writing). 29 They can be enabled at configure time with 30 <a class="link" href="configure.html" title="Configure"><code class="literal">--enable-concept-checks</code></a>. 31 You can enable them on a per-translation-unit basis with 32 <a class="link" href="using_macros.html" title="Macros"><code class="code">#define 33 _GLIBCXX_CONCEPT_CHECKS</code></a> for GCC 3.4 and higher 34 (or with <code class="code">#define _GLIBCPP_CONCEPT_CHECKS</code> for versions 35 3.1, 3.2 and 3.3). 36 </p><p>Please note that the concept checks only validate the requirements 37 of the old C++03 standard. C++11 was expected to have first-class 38 support for template parameter constraints based on concepts in the core 39 language. This would have obviated the need for the library-simulated concept 40 checking described above, but was not part of C++11. 41 </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_preface.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="debug_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">��</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��17.��Debug Mode</td></tr></table></div></body></html>