portability.html 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. <div class="footer-separator"></div>
  135. <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>
  136. </tr></table></body>
  137. </html>