aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--www/cxx_status.html2281
1 files changed, 47 insertions, 2234 deletions
diff --git a/www/cxx_status.html b/www/cxx_status.html
index 8477f03dfc..654c6a7591 100644
--- a/www/cxx_status.html
+++ b/www/cxx_status.html
@@ -3,7 +3,7 @@
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Clang - C++ Support</title>
+ <title>Clang - C++ and C++'0x Status</title>
<link type="text/css" rel="stylesheet" href="menu.css">
<link type="text/css" rel="stylesheet" href="content.css">
<style type="text/css">
@@ -22,31 +22,28 @@
<div id="content">
<!--*************************************************************************-->
-<h1>C++ Support in Clang</h1>
+<h1>C++ and C++'0x Support in Clang</h1>
<!--*************************************************************************-->
<p>Last updated: $Date$</p>
-<h1>Clang C++ Status</h1>
-
<ul>
<li><a href="#projects">Projects Building with Clang</a></li>
<li><a href="#specification">Implementation Status by Section</a></li>
<li><a href="#cxx0x">C++0x Status</a></li>
</ul>
-<p>Clang currently implements nearly all of the ISO C++ 1998 standard (including the defects addressed in the ISO C++ 2003 standard). However, the implementation of Clang C++ is still quite immature, with many remaining bugs that are likely to cause compiler crashes, erroneous errors and warnings, and miscompiled code. The <a href="http://llvm.org/bugs/">LLVM bug tracker</a> contains a Clang C++ component that tracks known Clang C++ bugs.</p>
+<p>Clang currently implements all of the ISO C++ 1998 standard (including
+ the defects addressed in the ISO C++ 2003 standard) except for 'export'.
+ However, the implementation of Clang C++ is still somewhat immature, with
+ remaining bugs that may cause compiler crashes, erroneous errors and warnings,
+ or miscompiled code. The <a href="http://llvm.org/bugs/">LLVM bug tracker</a>
+ contains a Clang C++ component that tracks known Clang C++ bugs.</p>
<h2 id="projects">Projects Building with Clang</h2>
- <p>Clang is now capable of compiling some language C++ projects, or
-large pieces of such projects. The following table describes various
-projects that we have attempted to compile with Clang along with the results of that attempt.</p>
-
- <p> At this point in time, each new C++ project typically uncovers
-new bugs. We keep track of these in the <a
- href="http://llvm.org/bugs/">LLVM bug tracker</a> via tracking bugs,
-which are used to relate all of the bugs known to affect that
-particular project. Introducing a new project in this list typically requires a liason familiar with LLVM or Clang development, who is able to provide detailed bug reports and track progress for the particular project.</p>
+ <p>Clang is now capable of compiling large C++ projects, and the following
+ table describes various projects that we have attempted to compile with
+ Clang++.</p>
<table width="689" border="1" cellspacing="0">
<tr>
@@ -68,20 +65,29 @@ particular project. Introducing a new project in this list typically requires a
<td></td>
</tr>
<tr>
+ <td><a href="http://www.boost.org">Boost</a></td>
+ <td><a href="http://blog.llvm.org/2010/05/clang-builds-boost.html">Compiles
+ and passes regression tests</a> on Darwin/X86-64.</td>
+ <td>May 20, 2010</td>
+ <td><a href="http://llvm.org/bugs/show_bug.cgi?id=6023">PR6023</a></td>
+ </tr>
+ <tr>
<td><a href="http://qt.nokia.com">Qt</a></td>
<td>Partially compiles; miscompilation of uic prevents complete compilation, qmake works, some small examples also.</td>
<td>February 9, 2010</td>
<td><a href="http://llvm.org/bugs/show_bug.cgi?id=5881">PR5881</a></td>
</tr>
- <tr>
- <td><a href="http://www.boost.org">Boost</a></td>
- <td>Some libraries (e.g., Boost.MPL) successfully build and pass regression tests, the majority still fail.</td>
- <td>February 5, 2010</td>
- <td><a href="http://llvm.org/bugs/show_bug.cgi?id=6023">PR6023</a></td>
- </tr>
</table>
- <h2 id="specification">Implementation Status by Section</h2>
+<h2 id="cxx0x">C++0x Implementation status</h2>
+
+<p>Clang's development effort is focused primarily on fixing bugs in the current
+ISO C++ standard (1998/2003). This section tracks the status of various C++0x
+features. In general, the implementations of these features are far less
+developed than C++98/03 features.</p>
+
+
+<h2 id="specification">Implementation Status by Feature</h2>
<!-- Within this table: The colors we're using to color-code our level
@@ -96,9 +102,9 @@ of support for a given section:
-->
<p>The following table is used to help track our implementation
- progress toward implementing the complete C++03 standard. We use a
+ progress toward implementing the complete C++'0x standard. We use a
simple, somewhat arbitrary color-coding scheme to describe the
- relative completeness of features by section:</p>
+ relative completeness of features:</p>
<table width="689" border="1" cellspacing="0">
<tr>
@@ -125,2239 +131,46 @@ of support for a given section:
<p>A feature is "complete" when the appropriate Clang component (Parse, AST,
Sema, CodeGen) implements the behavior described in all of the
-paragraphs in the relevant C++ standard. Note that many C++ features are
-actually described in several different sections within the standard. The major components are:</p>
+paragraphs in the relevant C++'0x draft standard. The major
+components are:</p>
<dl>
<dt>Parse</dt>
- <dd>Clang is able to parse the grammar of this feature (or the grammar described by this section), but does not necessarily do anything with the parsed result. Use Clang's <code>-fsyntax-only</code> option to parse C++ programs.</dd>
+ <dd>Clang is able to parse the grammar of this feature (or the grammar
+ described by this section), but does not necessarily do anything with the
+ parsed result. Use Clang's <code>-fsyntax-only</code> option to parse C++
+ programs.</dd>
<dt>AST</dt>
- <dd>Clang builds an abstract syntax tree (AST) for the feature, but does not necessarily perform any type-checking. Use Clang's <code>-ast-print</code> option to print the resulting ASTs.</dd>
+ <dd>Clang builds an abstract syntax tree (AST) for the feature, but does not
+ necessarily perform any type-checking. Use Clang's <code>-ast-print</code>
+ option to print the resulting ASTs.</dd>
<dt>Sema</dt>
- <dd>Clang parses and type-checks this feature and provides a well-formed AST annotated with types. Use Clang's <code>-fsyntax-only</code> to type-check code.</dd>
+ <dd>Clang parses and type-checks this feature and provides a well-formed AST
+ annotated with types. Use Clang's <code>-fsyntax-only</code> to type-check
+ code.</dd>
<dt>CodeGen</dt>
- <dd>Clang parses, type-checks, and generates code for this feature, allowing one to compile and execute programs.</dd>
+ <dd>Clang parses, type-checks, and generates code for this feature, allowing
+ one to compile and execute programs.</dd>
</dl>
-<p>Updates to this table are welcome! Since Clang already supports
-much of C, and therefore much C++, many of the currently-white cells
-could be filled in. If you wish to do so, please compare Clang's
-implementation against the C++ standard and provide a patch that
-updates the table accordingly. Tests for the various features are also
+<p>Updates to this table are welcome! Tests for the various features are also
welcome!</p>
<table width="689" border="1" cellspacing="0">
+<tr><td colspan="6" align="center" bgcolor="#ffffcc">C++0x Features</td>
+</tr>
<tr>
- <th>Section</th>
+ <th>Feature</th>
<th>Parse</th>
<th>AST</th>
<th>Sema</th>
<th>CodeGen</th>
<th>Notes</th>
</tr>
-<tr>
- <td>2 [lex]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.1 [lex.phases]</td>
- <td class="advanced" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>Extended characters aren't handled.</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.2 [lex.charset]</td>
- <td class="basic"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>No support for extended characters.</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.3 [lex.trigraph]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.4 [lex.pptoken]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.5 [lex.digraph]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.6 [lex.token]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.7 [lex.comment]</td>
- <td class="advanced" align="center"></td>
- <td></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>NDR "form feed or vtab in comment" is not diagnosed.</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.8 [lex.header]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.9 [lex.ppnumber]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.10 [lex.name]</td>
- <td class="advanced" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>No support for extended characters</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.11 [lex.key]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.12 [lex.operators]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;2.13 [lex.literal]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;2.13.1 [lex.icon]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;2.13.2 [lex.ccon]</td>
- <td class="advanced" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>Poor support for extended characters</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;2.13.3 [lex.fcon]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;2.13.4 [lex.string]</td>
- <td class="advanced" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>Poor support for extended characters</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;2.13.5 [lex.bool]</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
-<td>3 [basic]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;3.1 [basic.def]</td>
- <td></td>
- <td></td>
- <td></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;3.2 [basic.def.odr]</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;3.3 [basic.scope]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.3.1 [basic.scope.pdecl]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.3.2 [basic.scope.local]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.3.3 [basic.scope.proto]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.3.4 [basic.funscope]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.3.5 [basic.scope.namespace]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="complete"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.3.6 [basic.scope.class]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="advanced"></td>
- <td class="na">N/A</td>
- <td>Does not check that reordering the members of a class maintains semantics.</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.3.7 [basic.scope.hiding]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;3.4 [basic.lookup]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="complete" align="center"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.4.1 [basic.lookup.unqual]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="advanced"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.4.2 [basic.lookup.argdep]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="complete"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.4.3 [basic.lookup.qual]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="advanced"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.4.3.1 [class.qual]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="advanced"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.4.3.2 [namespace.qual]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="advanced"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.4.4 [basic.lookup.elab]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.4.5 [basic.lookup.classref]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="advanced"></td>
- <td class="na">N/A</td>
- <td>Missing ambiguity/consistency checks for paragraphs 3 (~type-name) and 7 (conversion-type-id)</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;3.4.6 [basic.lookup.udir]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="medium"></td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr><td>&nbsp;&nbsp;3.5 [basic.link]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;3.6 [basic.start]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.6.1 [basic.start.main]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.6.2 [basic.start.init]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.6.3 [basic.start.term]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;3.7 [basic.stc]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.7.1 [basic.stc.static]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.7.2 [basic.stc.auto]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.7.3 [basic.stc.dynamic]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.7.3.1 [basic.stc.dynamic.allocation]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.7.3.2 [basic.stc.dynamic.deallocation]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.7.4 [basic.stc.inherit]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;3.8 [basic.life]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;3.9 [basic.types]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.9.1 [basic.fundamental]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.9.2 [basic.compound]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.9.3 [basic.type.qualifier]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;3.10 [basic.lval]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr>
- <td>4 [conv]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.1 [conv.lval]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="advanced" align="center"></td> <!-- p2: sizeof -->
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.2 [conv.array]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.3 [conv.func]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="advanced" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.4 [conv.qual]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.5 [conv.prom]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.6 [conv.fpprom]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.7 [conv.integral]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.8 [conv.double]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.9 [conv.fpint]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.10 [conv.ptr]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.11 [conv.mem]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;4.12 [conv.bool]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>5 [expr]</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="na">N/A</td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.1 [expr.prim]</td>
- <td class="advanced" align="center"></td>
- <td class="advanced" align="center"></td>
- <td class="advanced" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr><td>&nbsp;&nbsp;5.2 [expr.post]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.1 [expr.sub]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.2 [expr.call]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="advanced" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.3 [expr.type.conv]</td>
- <td class="complete" align="center"></td>
- <td class="advanced" align="center"></td>
- <td class="advanced"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.4 [expr.pseudo]</td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.5 [expr.ref]</td>
- <td class="complete" align="center"></td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.6 [expr.post.incr]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.7 [expr.dynamic.cast]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.8 [expr.typeid]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.9 [expr.static.cast]</td>
- <td class="complete" align="center"></td>
- <td class="advanced" align="center"></td>
- <td class="advanced" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.10 [expr.reinterpret.cast]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.11 [expr.const.cast]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr><td>&nbsp;&nbsp;5.3 [expr.unary]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;5.3.1 [expr.unary.op]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.3.1p1 Unary *</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.3.1p2-5 Unary &amp;</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.3.1p6 Unary +</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.3.1p7 Unary -</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.3.1p8 Unary !</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.3.1p9 Unary ~</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.3.2 [expr.pre.incr]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.3.3 [expr.sizeof]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.3.4 [expr.new]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="advanced" align="center"></td>
- <td></td>
- <td>operator delete is not looked up, initialization not quite correct</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;5.3.5 [expr.delete]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.4 [expr.cast]</td>
- <td class="complete" align="center"></td>
- <td class="advanced" align="center"></td>
- <td class="advanced"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.5 [expr.mptr.oper]</td>
- <td class="complete" align="center"></td>
- <td class="advanced"></td>
- <td class="advanced"></td>
- <td></td>
- <td>Dereferenced member function pointers have the wrong type(see FIXME in CheckPointerToMemberOperands).</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.6 [expr.mul]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.7 [expr.add]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.8 [expr.shift]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.9 [expr.rel]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.10 [expr.eq]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.11 [expr.bit.and]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.12 [expr.xor]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.13 [expr.or]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.14 [expr.log.and]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.15 [expr.log.or]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.16 [expr.cond]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td>some invalid hierarchy casts still accepted, but that's a general problem</td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.17 [expr.ass]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>&nbsp;&nbsp;5.18 [expr.comma]</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td cl