<tdclass="header-group page-location"><ahref="../index.html"class="navigation-link">Front Page</a> / <ahref="./tutorial-metafunctions.html"class="navigation-link">Tutorial: Metafunctions and Higher-Order Metaprogramming</a></td>
</tr></table><divclass="header-separator"></div>
<divclass="section"id="tutorial-metafunctions">
<h1><aclass="toc-backref"href="../index.html#id40"name="tutorial-metafunctions">Tutorial: Metafunctions and Higher-Order Metaprogramming</a></h1>
<tableclass="field-list"frame="void"rules="none">
<colclass="field-name"/>
<colclass="field-body"/>
<tbodyvalign="top">
<trclass="field"><thclass="field-name">Note:</th><tdclass="field-body">The following material is an excerpt from Chapter 3 of "<aclass="reference"href="http://www.awprofessional.com/titles/0321227255"target="_top">C++ Template Metaprogramming</a>",
by David Abrahams and Aleksey Gurtovoy, ISBN 0321227255, <aclass="reference"href="http://www.awprofessional.com/titles/0321227255"target="_top">http://www.awprofessional.com/titles/0321227255</a>.
Copyright (c) 2005 by Pearson Education, Inc. Reprinted with permission.</td>
</tr>
</tbody>
</table>
<p>With the foundation laid so far, we're ready to explore one of the
most basic uses for template metaprogramming techniques: adding
static type checking to traditionally unchecked operations. We'll
look at a practical example from science and engineering that can
find applications in almost any numerical code.
Along the way you'll learn some important new concepts and
get a taste of metaprogramming at a high level using the MPL.</p>