]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpl/doc/tutorial/portability.html
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / mpl / doc / tutorial / portability.html
1 <?xml version="1.0" encoding="utf-8" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 <!-- Copyright Aleksey Gurtovoy 2006. Distributed under the Boost -->
5 <!-- Software License, Version 1.0. (See accompanying -->
6 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
7 <head>
8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9 <meta name="generator" content="Docutils 0.3.6: http://docutils.sourceforge.net/" />
10 <title>THE BOOST MPL LIBRARY: Portability</title>
11 <link rel="stylesheet" href="../style.css" type="text/css" />
12 </head>
13 <body class="docframe">
14 <table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./dependencies.html" class="navigation-link">Prev</a>&nbsp;<a href="./broken-integral-constant.html" class="navigation-link">Next</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./dependencies.html" class="navigation-link">Back</a>&nbsp;Along</span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./technical-details.html" class="navigation-link">Up</a>&nbsp;<a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
15 <td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./technical-details.html" class="navigation-link">Technical Details</a> / <a href="./portability.html" class="navigation-link">Portability</a></td>
16 </tr></table><div class="header-separator"></div>
17 <div class="section" id="portability">
18 <h1><a class="toc-backref" href="./technical-details.html#id73" name="portability">Portability</a></h1>
19 <p>It has always been a major goal of MPL development that a program
20 using the MPL should compile and run without modification on a wide
21 variety of compilers. To this end, the library goes to great
22 lengths to hide the quirks of less-than-perfect compilers. Of
23 course, there is only that much that you can do about an utterly
24 broken compiler. This section describes the places where those
25 quirks &quot;leak out&quot; of the library abstraction layer, and what you can
26 do about it when they do.</p>
27 <p>With respect to MPL compatibility we divide C++ compilers roughly
28 into three categories:</p>
29 <ol class="upperalpha simple">
30 <li>Reasonably conforming compilers that &quot;just work&quot; with the MPL.</li>
31 <li>Not-so-conforming compilers that work but require some workarounds in user code.</li>
32 <li>Compilers that are so broken that it's not practical to use them for any serious
33 metaprogramming work.</li>
34 </ol>
35 <p>We haven't tested every compiler in existence (simply because we don't have access to
36 all of them), but chances are the table below
37 will give you the information you are looking for. Please note that
38 the fact that one version of a compiler appears
39 in this list as &quot;Not supported&quot; does <em>not</em> mean that future versions are also
40 unworkable — some vendors are working hard to correct the
41 problems... and, as of this writing (late 2004), some are not.</p>
42 <p>Please keep in mind that this is not a complete list!</p>
43 <a class="target" id="compatibility-table" name="compatibility-table"></a><table border="1" class="table">
44 <colgroup>
45 <col width="27%" />
46 <col width="11%" />
47 <col width="11%" />
48 <col width="51%" />
49 </colgroup>
50 <thead valign="bottom">
51 <tr><th>Compiler</th>
52 <th>Versions</th>
53 <th>Category</th>
54 <th>Problematic Areas (if any)</th>
55 </tr>
56 </thead>
57 <tbody valign="top">
58 <tr><td>Borland C++</td>
59 <td>5.6.4</td>
60 <td>B</td>
61 <td><a class="reference" href="./incomplete-support-for.html">Lambda Expressions</a>, <a class="reference" href="./broken-integral-constant.html">Integral Constant Expressions</a></td>
62 </tr>
63 <tr><td>Borland C++</td>
64 <td>5.6.1</td>
65 <td>C</td>
66 <td><strong>Not supported</strong></td>
67 </tr>
68 <tr><td>Comeau C/C++</td>
69 <td>4.2.45,
70 4.3.3</td>
71 <td>A</td>
72 <td>&nbsp;</td>
73 </tr>
74 <tr><td>Compaq C++ (Tru64 UNIX)</td>
75 <td>6.5</td>
76 <td>A</td>
77 <td>&nbsp;</td>
78 </tr>
79 <tr><td>GCC</td>
80 <td>3.2.2,
81 3.3.1, 3.4</td>
82 <td>A</td>
83 <td>&nbsp;</td>
84 </tr>
85 <tr><td>GCC</td>
86 <td>2.95.3</td>
87 <td>B</td>
88 <td><a class="reference" href="./broken-integral-constant.html">Integral Constant Expressions</a></td>
89 </tr>
90 <tr><td>HP aCC</td>
91 <td>3.55</td>
92 <td>C</td>
93 <td><strong>Not supported</strong></td>
94 </tr>
95 <tr><td>Intel C++</td>
96 <td>7.1, 8.0</td>
97 <td>A</td>
98 <td>&nbsp;</td>
99 </tr>
100 <tr><td>Metrowerks CodeWarrior</td>
101 <td>8.3, 9.2</td>
102 <td>A</td>
103 <td>&nbsp;</td>
104 </tr>
105 <tr><td>Microsoft Visual C++</td>
106 <td>7.1</td>
107 <td>A</td>
108 <td>&nbsp;</td>
109 </tr>
110 <tr><td>Microsoft Visual C++</td>
111 <td>6.0 sp5,
112 7.0</td>
113 <td>B</td>
114 <td><a class="reference" href="./incomplete-support-for.html">Lambda Expressions</a>, <a class="reference" href="./eti.html">ETI</a>, <a class="reference" href="./broken-integral-constant.html">Integral Constant Expressions</a></td>
115 </tr>
116 <tr><td>SGI MIPSpro</td>
117 <td>7.3</td>
118 <td>B</td>
119 <td><a class="reference" href="./broken-integral-constant.html">Integral Constant Expressions</a></td>
120 </tr>
121 <tr><td>Sun CC</td>
122 <td>5.6</td>
123 <td>C</td>
124 <td><strong>Not supported</strong></td>
125 </tr>
126 </tbody>
127 </table>
128 <ul class="toc simple" id="outline">
129 <li><a class="reference" href="./broken-integral-constant.html" id="id74" name="id74">Broken Integral Constant Expressions</a></li>
130 <li><a class="reference" href="./incomplete-support-for.html" id="id75" name="id75">Incomplete Support for Lambda Expressions</a></li>
131 <li><a class="reference" href="./eti.html" id="id76" name="id76">ETI</a></li>
132 </ul>
133 </div>
134
135 <div class="footer-separator"></div>
136 <table class="footer"><tr class="footer"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./dependencies.html" class="navigation-link">Prev</a>&nbsp;<a href="./broken-integral-constant.html" class="navigation-link">Next</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./dependencies.html" class="navigation-link">Back</a>&nbsp;Along</span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./technical-details.html" class="navigation-link">Up</a>&nbsp;<a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
137 </tr></table></body>
138 </html>