forked from boostorg/preprocessor
Starting to use the new templates
[SVN r12718]
This commit is contained in:
40
doc/acknowledgements.htm
Normal file
40
doc/acknowledgements.htm
Normal file
@ -0,0 +1,40 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<title>Boost.Preprocessor - Acknowledgements</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF" link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Preprocessor</h1>
|
||||
<h2 align="center">Acknowledgements</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
<p>The original idea of passing two extra parameters to REPEAT, which makes it
|
||||
possible to create preprocessor code on top of it, was due to Aleksey Gurtovoy.
|
||||
The invokeable IDENTITY macro was also invented by him. He also suggested the
|
||||
name for the library. Many thanks to Aleksey for his insights!</p>
|
||||
<p>Thanks to everyone who participated in the review: David Abrahams, Beman Dawes,
|
||||
Ronald Garcia, Douglas Gregor, Aleksey Gurtovoy, Jeremy Siek, and Daryle Walker.</p>
|
||||
<p>Thanks to Chris Little and Mat Marcus for providing help with MWCW.</p>
|
||||
<p>The PREPROCESSOR library has been developed by Vesa Karvonen. </p>
|
||||
<hr>
|
||||
<p>Revised
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
<!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
<p><i>© Copyright <a href="http://www.housemarque.com">Housemarque Oy</a> 2002</i></p>
|
||||
|
||||
<p><i>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
provided this copyright notice appears in all copies. This document is provided
|
||||
"as is" without express or implied warranty, and with no claim as to its suitability
|
||||
for any purpose.</i></p>
|
||||
</body>
|
||||
</html>
|
@ -1,16 +1,22 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Boost PREPROCESSOR library</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<title>Boost.Preprocessor - Tutorial examples preprocessed</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF">
|
||||
<a href="index.htm"><IMG height=86
|
||||
alt="c++boost.gif (8819 bytes)"
|
||||
src="../../../c++boost.gif"
|
||||
width=277 align=center></a>
|
||||
<body bgcolor="#FFFFFF" link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Preprocessor</h1>
|
||||
<h2 align="center">Tutorial examples preprocessed</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
<h1>Boost PREPROCESSOR library: Tutorial examples preprocessed</h1>
|
||||
|
||||
<p>The following code snippets were produced by actually preprocessing the code
|
||||
snippets of the tutorial. After preprocessing the code was reformatted manually.</p>
|
||||
@ -323,12 +329,15 @@ BAD PARAMS FOR SPECIAL_NUMBERED_LIST! E0, E1, E2, S</pre>
|
||||
</blockquote>
|
||||
|
||||
<hr>
|
||||
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
|
||||
<p>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
<p>Revised
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
<!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
<p><i>© Copyright <a href="http://www.housemarque.com">Housemarque Oy</a> 2002</i></p>
|
||||
|
||||
<p><i>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
provided this copyright notice appears in all copies. This document is provided
|
||||
"as is" without express or implied warranty, and with no claim as to its suitability
|
||||
for any purpose. </p>
|
||||
<p>Updated: <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan --><!--webbot bot="Timestamp" endspan i-checksum="15246" -->
|
||||
<p></p>
|
||||
for any purpose.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,64 +1,41 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<HTML><HEAD><TITLE>Boost PREPROCESSOR library</TITLE>
|
||||
|
||||
<BODY bgcolor="#FFFFFF">
|
||||
|
||||
<table border="1" bgcolor="#007F7F" cellpadding="2">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<title>Boost.Preprocessor - Index</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF" link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td bgcolor="#FFFFFF"><img src="../../../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
|
||||
<td><a href="../../../index.htm"><font face="Arial" color="#FFFFFF"><big>Home </big></font></a></td>
|
||||
<td><a href="../../libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries </big></font></a></td>
|
||||
<td><a href="../../../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People </big></font></a></td>
|
||||
<td><a href="../../../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ </big></font></a></td>
|
||||
<td><a href="../../../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More </big></font></a></td>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Preprocessor</h1>
|
||||
<h2 align="center">Index</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1>Boost PREPROCESSOR library</h1>
|
||||
<hr>
|
||||
|
||||
<p>C++ programming sometimes involves repeating lists of template or function
|
||||
parameters. Such repetition is troublesome, because it tends to be done manually,
|
||||
which means that the maximum number of parameters is bound into the design of
|
||||
the program making it difficult to configure. Automating the repetition using
|
||||
extra linguistic tools introduces another set of problems.</p>
|
||||
<p>The C preprocessor is part of the C++ language and can manipulate and generate
|
||||
tokens. Unfortunately the C preprocessor is also a very low level macro processor.
|
||||
In particular, it doesn't directly support repetition or recursion. Fortunately
|
||||
it is possible to perform finite repetition and recursion using a library of
|
||||
preprocessor primitives.</p>
|
||||
<p>The PREPROCESSOR library provides facilities for C preprocessor metaprogramming.
|
||||
Preprocessor metaprogramming makes it possible to generate function and template
|
||||
parameter lists and make libraries configurable through preprocessor definitions.</p>
|
||||
<h2>Documentation</h2>
|
||||
|
||||
<DL>
|
||||
<LI><A href="tutorial.htm">Tutorial</A>
|
||||
<LI><A href="reference/index.htm">Reference</A>
|
||||
<LI><a href="known_problems_with_cpp.htm">Widely known problems with the C preprocessor</a>
|
||||
<LI><A href="keywords.txt">Keywords for syntax highlighting</A>
|
||||
<LI><A href="references.htm">References</A>
|
||||
<LI><A href="problems_with_compilers.htm">Known problems with specific compilers</A>
|
||||
</DL>
|
||||
|
||||
<h3>Acknowledgements</h3>
|
||||
|
||||
<p>The original idea of passing two extra parameters to REPEAT, which makes it
|
||||
possible to create preprocessor code on top of it, was due to Aleksey Gurtovoy.
|
||||
The invokeable IDENTITY macro was also invented by him. He also suggested the
|
||||
name for the library. Many thanks to Aleksey for his insights!</p>
|
||||
<p>Thanks to everyone who participated in the review: David Abrahams, Beman Dawes,
|
||||
Ronald Garcia, Douglas Gregor, Aleksey Gurtovoy, Jeremy Siek, and Daryle Walker.</p>
|
||||
<p>Thanks to Chris Little and Mat Marcus for providing help with MWCW.</p>
|
||||
<p>The PREPROCESSOR library has been developed by
|
||||
<a href="../../../people/vesa_karvonen.htm">Vesa Karvonen</a>.</p>
|
||||
<h2>Contents</h2>
|
||||
<dl>
|
||||
<dt><a href="tutorial.htm">Tutorial</a></dt>
|
||||
<dt><a href="reference/index.htm">Reference</a></dt>
|
||||
<dt><a href="known_problems_with_cpp.htm">Widely known problems with the C preprocessor</a></dt>
|
||||
<dt><a href="keywords.txt">Keywords for syntax highlighting</a></dt>
|
||||
<dt><a href="problems_with_compilers.htm">Known problems with specific compilers</a></dt>
|
||||
<dt><a href="references.htm">References</a></dt>
|
||||
<dt><a href="acknowledgements.htm">Acknowledgements</a></dt>
|
||||
</dl>
|
||||
|
||||
<hr>
|
||||
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
|
||||
<p>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
<p><i>© Copyright <a href="http://www.housemarque.com">Housemarque Oy</a> 2002</i></p>
|
||||
|
||||
<p><i>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
provided this copyright notice appears in all copies. This document is provided
|
||||
"as is" without express or implied warranty, and with no claim as to its suitability
|
||||
for any purpose. </p>
|
||||
<p>Updated: <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan -->30 Nov 2001<!--webbot bot="Timestamp" i-checksum="15239" endspan -->
|
||||
<p></p>
|
||||
|
||||
</BODY></HTML>
|
||||
for any purpose.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,17 +1,25 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<HTML><HEAD><TITLE>Boost PREPROCESSOR library</TITLE>
|
||||
<BODY bgcolor="#ffffff">
|
||||
<a href="index.htm"><IMG height=86
|
||||
alt="c++boost.gif (8819 bytes)"
|
||||
src="../../../c++boost.gif"
|
||||
width=277 align=center></a>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<title>Boost.Preprocessor - Widely known problems with the C preprocessor</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF" link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Preprocessor</h1>
|
||||
<h2 align="center">Widely known problems with the C preprocessor</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h1>Boost PREPROCESSOR library: Widely known problems with the C preprocessor</h1>
|
||||
|
||||
<p>
|
||||
|
||||
Preprocessor metaprogramming is subject to heated discussions. Part of this is caused by
|
||||
<p>Preprocessor metaprogramming is subject to heated discussions. Part of this is caused by
|
||||
bad experiences with dangerous techniques, such as defining inline functions using macros. As a rule
|
||||
of thumb, if you can find a clean and
|
||||
manageable way to do something without using the preprocessor, then
|
||||
@ -102,12 +110,15 @@ long time.</P>
|
||||
<P><EM><B>In practice, preprocessor metaprogramming is far simpler and more portable
|
||||
than template metaprogramming <A href="references.htm#[2]">[2]</A>.</B></EM></P>
|
||||
<hr>
|
||||
<P><EFBFBD> Copyright Housemarque Oy 2001</P>
|
||||
<p>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
<p>Revised
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
<!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
<p><i>© Copyright <a href="http://www.housemarque.com">Housemarque Oy</a> 2002</i></p>
|
||||
|
||||
<p><i>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
provided this copyright notice appears in all copies. This document is provided
|
||||
"as is" without express or implied warranty, and with no claim as to its suitability
|
||||
for any purpose. </p>
|
||||
<p>Updated: <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan --><!--webbot bot="Timestamp" endspan i-checksum="15246" --></p>
|
||||
<p></p>
|
||||
|
||||
</BODY></HTML>
|
||||
for any purpose.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,13 +1,23 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<HTML><HEAD><TITLE>Boost PREPROCESSOR library</TITLE>
|
||||
<BODY bgcolor="#ffffff">
|
||||
<a href="index.htm"><IMG height=86
|
||||
alt="c++boost.gif (8819 bytes)"
|
||||
src="../../../c++boost.gif"
|
||||
width=277 align=center></a>
|
||||
<hr>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<title>Boost.Preprocessor - Known problems with specific compilers</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF" link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Preprocessor</h1>
|
||||
<h2 align="center">Known problems with specific compilers</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1>Boost PREPROCESSOR library: Known problems with specific compilers</h1>
|
||||
<hr>
|
||||
|
||||
<p> Some compilers have buggy or limited preprocessors. This page explains known
|
||||
problems with specific compilers.</p>
|
||||
@ -115,12 +125,15 @@ BOOST_PP_REPEAT_2ND(BOOST_PP_INC(IS_FUNCTION_HELPER_TEST_MAX),IS_FUNCTION_HELPER
|
||||
<p align="right"><i>Reported by Aleksey Gurtovoy</i></p>
|
||||
|
||||
<hr>
|
||||
<P><EFBFBD> Copyright Housemarque Oy 2001</P>
|
||||
<p>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
<p>Revised
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
<!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
<p><i>© Copyright <a href="http://www.housemarque.com">Housemarque Oy</a> 2002</i></p>
|
||||
|
||||
<p><i>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
provided this copyright notice appears in all copies. This document is provided
|
||||
"as is" without express or implied warranty, and with no claim as to its suitability
|
||||
for any purpose. </p>
|
||||
<p>Updated: <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan --><!--webbot bot="Timestamp" endspan i-checksum="15246" --></p>
|
||||
<p></p>
|
||||
|
||||
</BODY></HTML>
|
||||
for any purpose.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -45,7 +45,7 @@
|
||||
|
||||
<h3>Uses</h3>
|
||||
<ul>
|
||||
<li><a href="list_for_each.htm#BOOST_PP_LIST_FOR_EACH">BOOST_PP_LIST_FOR_EACH</a>()</li>
|
||||
<li><a href="for.htm#BOOST_PP_FOR">BOOST_PP_FOR</a>()</li>
|
||||
</ul>
|
||||
|
||||
<hr>
|
||||
|
@ -1,13 +1,23 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<HTML><HEAD><TITLE>Boost PREPROCESSOR library</TITLE>
|
||||
<BODY bgcolor="#FFFFFF">
|
||||
<a href="index.htm"><IMG height=86
|
||||
alt="c++boost.gif (8819 bytes)"
|
||||
src="../../../c++boost.gif"
|
||||
width=277 align=center></a>
|
||||
<hr>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<title>Boost.Preprocessor - References</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF" link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Preprocessor</h1>
|
||||
<h2 align="center">References</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1>Boost PREPROCESSOR library: References</h1>
|
||||
<hr>
|
||||
|
||||
<OL>
|
||||
<LI> <a name="[1]">Stroustrup: The Design and Evolution of C++, ISBN 0-201-54330-3</a>
|
||||
@ -20,16 +30,11 @@
|
||||
|
||||
<hr>
|
||||
|
||||
<P></P>
|
||||
<p><i>© Copyright <a href="http://www.housemarque.com">Housemarque Oy</a> 2002</i></p>
|
||||
|
||||
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
|
||||
<p>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
<p><i>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
provided this copyright notice appears in all copies. This document is provided
|
||||
"as is" without express or implied warranty, and with no claim as to its suitability
|
||||
for any purpose. </p>
|
||||
<p>Updated: <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan --><!--webbot bot="Timestamp" endspan i-checksum="15246" -->
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
|
||||
</BODY></HTML>
|
||||
for any purpose.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,36 +1,47 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<HTML><HEAD><TITLE>Boost PREPROCESSOR library</TITLE>
|
||||
<BODY bgcolor="#FFFFFF">
|
||||
<a href="index.htm"><IMG height=86
|
||||
alt="c++boost.gif (8819 bytes)"
|
||||
src="../../../c++boost.gif"
|
||||
width=277 align=center></a>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<title>Boost.Preprocessor - Tutorial</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF" link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Preprocessor</h1>
|
||||
<h2 align="center">Tutorial</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
|
||||
<h1>Boost PREPROCESSOR library: Tutorial</h1>
|
||||
<hr>
|
||||
<h2>Contents</h2>
|
||||
<ul>
|
||||
<li><a href="#Motivation">Motivation</a></li>
|
||||
<li><a href="#Techniques">Preprocessor Metaprogramming Techniques</a>
|
||||
<ul>
|
||||
<li><a href="#Local Macro">Use a Local Macro to avoid small scale repetition</a></li>
|
||||
<li><a href="#UNUSED">Use BOOST_PP_EMPTY as an unused parameter in Local
|
||||
Macro instantiations</a></li>
|
||||
<li><a href="#CAT">Use BOOST_PP_CAT instead of ## when necessary</a></li>
|
||||
<li><a href="#STRINGIZE">Use BOOST_PP_STRINGIZE instead of # whenever necessary</a></li>
|
||||
<li><a href="#ENUM_PARAMS">Avoid O(N) repetition on lists in general</a></li>
|
||||
<li><a href="#Conditional Define">Use a Conditional Define to enable user configuration of code repetition</a></li>
|
||||
<li><a href="#Token Look-Up">Use Token Look-Up Function to eliminate categorical repetition</a></li>
|
||||
<li><a href="#2ND_REPEAT">Use BOOST_PP_REPEAT_2ND to avoid O(N*N) repetition</a></li>
|
||||
<li><a href="#IF">Use BOOST_PP_IF to implement special case for the first element</a>
|
||||
<li><a href="#Arithmetic">Use arithmetic, logical and comparison operations when necessary</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dt><a href="#Motivation">Motivation</a></dt>
|
||||
<dt><a href="#Techniques">Preprocessor Metaprogramming Techniques</a>
|
||||
<dl>
|
||||
<dt><a href="#Local Macro">Use a Local Macro to avoid small scale repetition</a></dt>
|
||||
<dt><a href="#UNUSED">Use BOOST_PP_EMPTY as an unused parameter in Local
|
||||
Macro instantiations</a></dt>
|
||||
<dt><a href="#CAT">Use BOOST_PP_CAT instead of ## when necessary</a></dt>
|
||||
<dt><a href="#STRINGIZE">Use BOOST_PP_STRINGIZE instead of # whenever necessary</a></dt>
|
||||
<dt><a href="#ENUM_PARAMS">Avoid O(N) repetition on lists in general</a></dt>
|
||||
<dt><a href="#Conditional Define">Use a Conditional Define to enable user configuration of code repetition</a></dt>
|
||||
<dt><a href="#Token Look-Up">Use Token Look-Up Function to eliminate categorical repetition</a></dt>
|
||||
<dt><a href="#2ND_REPEAT">Use BOOST_PP_REPEAT_2ND to avoid O(N*N) repetition</a></dt>
|
||||
<dt><a href="#IF">Use BOOST_PP_IF to implement special case for the first element</a></dt>
|
||||
<dt><a href="#Arithmetic">Use arithmetic, logical and comparison operations when necessary</a></dt>
|
||||
</dl>
|
||||
</dt>
|
||||
</dl>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2><a name="Motivation">Motivation</a></h2>
|
||||
|
||||
<p>The C++ function and template parameter lists are special syntactic constructs
|
||||
and it is impossible to directly manipulate or generate them using C++ constructs.
|
||||
This leads to unnecessary code repetition.</p>
|
||||
@ -475,14 +486,15 @@ SPECIAL_NUMBERED_LIST(3,3,E,S)
|
||||
</blockquote>
|
||||
|
||||
<hr>
|
||||
<p>Revised
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
<!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
<p><i>© Copyright <a href="http://www.housemarque.com">Housemarque Oy</a> 2002</i></p>
|
||||
|
||||
<P></P>
|
||||
|
||||
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
|
||||
<p>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
<p><i>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
provided this copyright notice appears in all copies. This document is provided
|
||||
"as is" without express or implied warranty, and with no claim as to its suitability
|
||||
for any purpose. </p>
|
||||
<p>Updated: <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan --><!--webbot bot="Timestamp" endspan i-checksum="15246" --></p>
|
||||
|
||||
</BODY></HTML>
|
||||
for any purpose.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
|
Reference in New Issue
Block a user