blob: f1c3fb952da910af5fe860e149ed95c9245f38ac [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Clang - C++ Support</title>
<link type="text/css" rel="stylesheet" href="menu.css">
<link type="text/css" rel="stylesheet" href="content.css">
<style type="text/css">
.na { background-color: #C0C0C0; text-align: center; }
.broken { background-color: #C11B17 }
.basic { background-color: #F88017 }
.medium { background-color: #FDD017 }
.advanced { background-color: #347C17 }
.complete { background-color: #00FF00 }
</style>
</head>
<body>
<!--#include virtual="menu.html.incl"-->
<div id="content">
<!--*************************************************************************-->
<h1>C++ Support in Clang</h1>
<!--*************************************************************************-->
<p>
This page tracks the status of C++ support in Clang.<br>
Currently most of the C++ features are missing; here you can find features that are at least partially supported in Clang. If you are looking to <a href="get_involved.html">get involved with Clang development</a> to help work on support for C++, please also look at our <a href="OpenProjects.html">Open Projects</a> page for some specific ideas.</p>
<!-- Within this table: The colors we're using to color-code our level
of support for a given section:
White (no background): not considered/tested.
#C11B17: Broken.
#F88017: Some useful examples work
#FDD017: Many examples work
#347C17: Nearly everything works
#00FF00 + check mark: Implementation complete!
-->
<p>The following table is used to help track our implementation
progress toward implementing the complete C++03 standard. We use a
simple, somewhat arbitrary color-coding scheme to describe the
relative completeness of features by section:</p>
<table width="689" border="1" cellspacing="0">
<tr>
<th>Not started/not evaluated</th>
<th>Not Applicable</th>
<th>Broken</th>
<th>Some examples work</th>
<th>Many examples work</th>
<th>Nearly everything works</th>
<th>Complete</th>
<th>Complete (with tests for each paragraph)</th>
</tr>
<tr>
<td></td>
<td class="na">N/A</td>
<td class="broken"></td>
<td class="basic"></td>
<td class="medium"></td>
<td class="advanced"></td>
<td class="complete"></td>
<td class="complete" align="center">&#x2713;</td>
</tr>
</table>
<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>
<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>
<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>
<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>
<dt>CodeGen</dt>
<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
welcome!</p>
<table width="689" border="1" cellspacing="0">
<tr>
<th>Section</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. No AST representation of comments.</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></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.3.6 [basic.scope.class]</td><td></td><td></td><td></td><td></td><td></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="medium"></td>
<td class="na">N/A</td>
<td>Many cases beyond simple global and function-local lookup don't work</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;3.4.2 [basic.lookup.argdep]</td>
<td class="na">N/A</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="na">N/A</td>
<td>Missing support for templates, friend functions.</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></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;3.4.6 [basic.lookup.udir]</td><td></td><td></td><td></td><td></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"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;5.1 [expr.prim]</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td></td>
<td>template-ids are not supported, name lookup is not complete</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="complete" align="center"></td>
<td class="basic"></td>
<td></td>
<td>Only between non-class types</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.4 [expr.pseudo]</td>
<td class="broken"></td>
<td class="broken"></td>
<td class="broken"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.5 [expr.ref]</td>
<td class="complete" align="center"></td>
<td class="medium"></td>
<td class="medium"></td>
<td></td>
<td>Cannot look up operator names, qualified-ids, or names in base classes</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="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td></td>
<td>Some custom conversions don't work.</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="complete" align="center"></td>
<td class="medium"></td>
<td></td>
<td>Too lenient, and may not always have correct semantics</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.</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 class="complete" align="center"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;5.19 [expr.const]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="basic"></td>
<td></td>
<td>Uses C semantics</td>
</tr>
<tr>
<td>6 [stmt.stmt]</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;6.1 [stmt.label]</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;6.2 [stmt.expr]</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;6.3 [stmt.block]</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;6.4 [stmt.select]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td></td>
<td>Conversion of declarations to required types not really supported.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;6.4.1 [stmt.if]</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;6.4.2 [stmt.switch]</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;6.5 [stmt.iter]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td></td>
<td>Conversion of declarations to required types not really supported.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;6.5.1 [stmt.while]</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;6.5.2 [stmt.do]</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;6.5.3 [stmt.for]</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;6.6 [stmt.jump]</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;6.6.1 [stmt.break]</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;6.6.2 [stmt.cont]</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;6.6.3 [stmt.return]</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;6.6.4 [stmt.goto]</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;6.7 [stmt.dcl]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td></td>
<td>Skipping of initialization is not flagged. Existence and accessibility of destructors is not tested for.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;6.8 [stmt.ambig]</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>7 [dcl.dcl]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>
&nbsp;&nbsp;7.1 [dcl.spec]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td></td>
<td>No support for friend declarations.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;7.1.1 [dcl.stc]</td>
<td class="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td></td>
<td>Linkage merging has some errors.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;7.1.2 [dcl.fct.spec]</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;7.1.3 [dcl.typedef]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;7.1.4 [dcl.friend]</td>
<td class="broken"></td>
<td class="broken"></td>
<td class="broken"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;7.1.5 [dcl.type]</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;7.1.5.1 [dcl.type.cv]</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;7.1.5.2 [dcl.type.simple]</td>
<td class="medium"></td>
<td class="advanced"></td>
<td class="advanced"></td>
<td></td>
<td>Cannot parse template IDs.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.1.5.3 [dcl.type.elab]</td>
<td class="medium"></td>
<td class="advanced"></td>
<td class="advanced"></td>
<td></td>
<td>Cannot parse template IDs.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;7.2 [dcl.enum]</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;7.3 [basic.namespace]</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;7.3.1 [namespace.def]</td>
<td class="medium"></td>
<td class="medium"></td>
<td class="medium"></td>
<td></td>
<td>Cannot parse namespace aliases.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.3.1.1 [namespace.unnamed]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="broken"></td>
<td></td>
<td>Unnamed namespace members cannot be looked up.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.3.1.2 [namespace.memdef]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="advanced"></td>
<td></td>
<td>The friend stuff is not supported.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;7.3.2 [namespace.alias]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;7.3.3 [namespace.udecl]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;7.3.4[namespace.udir]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="advanced"></td>
<td class="broken" align="center"></td>
<td>Example in p4 fails.</td>
</tr>
<tr><td>
&nbsp;&nbsp;7.4 [dcl.asm]</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;7.5 [dcl.link]</td>
<td class="complete" align="center"></td>
<td class="basic"></td>
<td class="basic"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>8 [dcl.decl]</td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;8.1 [dcl.name]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;8.2 [dcl.ambig.res]</td>
<td class="complete" align="center">&#x2713;</td>
<td class="na" align="center">N/A</td>
<td class="complete" align="center">&#x2713;</td>
<td class="na">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;8.3 [dcl.meaning]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td class="na">N/A</td>
<td>Qualified declarator-ids are not fully implemented.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;8.3.1 [dcl.ptr]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;8.3.2 [dcl.ref]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;8.3.3 [dcl.mptr]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;8.3.4 [dcl.array]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;8.3.5 [dcl.fct]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;8.3.6 [dcl.fct.default]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="na">N/A</td>
<td>Missing default arguments for templates.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;8.4 [dcl.fct.def]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td>ctor-initializers are not fully type-checked.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;8.5 [dcl.init]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;8.5.1[dcl.init.aggr]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td>No CodeGen for initializing non-aggregates or dynamic initialization.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;8.5.2[dcl.init.string]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;8.5.3 [dcl.init.ref]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td></td>
</tr>
<tr>
<td>9 [class]</td>
<td class="advanced" align="center"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;9.1 [class.name]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;9.2 [class.mem]</td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td>No parser support for using declarations or member templates.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;9.3 [class.mfct]</td>
<td class="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="basic" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;9.3.1 [class.mfct.non-static]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;9.3.2 [class.this]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;9.4 [class.static]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;9.4.1 [class.static.mfct]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;9.4.2 [class.static.data]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;9.5 [class.union]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="medium"></td>
<td class="medium"></td>
<td>Semantic analysis does not yet check all of the requirements placed on the members of unions.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;9.6 [class.bit]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;9.7 [class.nest]</td>
<td class="complete" align="center"></td>
<td class="advanced"></td>
<td class="advanced"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;9.8 [class.local]</td>
<td class="complete" align="center"></td>
<td class="medium"></td>
<td class="broken"></td>
<td class="broken"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;9.9 [class.nested.type]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>10 [class.derived]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;10.1 [class.mi]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td>No layout of base classes</td>
</tr>
<tr>
<td>&nbsp;&nbsp;10.2 [class.member.lookup]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;10.3 [class.virtual]</td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>No semantic analysis for overriding virtual functions or inheriting a virtual function. No layout of classes with virtual functions.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;10.4 [class.abstract]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>11 [class.access]</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;11.1 [class.access.spec]</td>
<td class="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td class="complete" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;11.2 [class.access.base]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;11.3 [class.access.dcl]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;11.4 [class.friend]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;11.5 [class.protected]</td>
<td class="na" align="center"></td>
<td class="complete" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;11.6 [class.access.virt]</td>
<td class="na" align="center"></td>
<td class="na" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;11.7 [class.paths]</td>
<td class="na" align="center"></td>
<td class="na" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;11.8 [class.access.nest]</td>
<td class="na" align="center"></td>
<td class="na" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr><td>12 [special]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr>
<td>&nbsp;&nbsp;12.1 [class.ctor]</td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td>Implicitly-declared constructors are never defined.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;12.2 [class.temporary]</td>
<td class="na" align="center">N/A</td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td>Implementation of temporary objects is in its initial stages.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;12.3 [class.conv]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;12.3.1 [class.conv.ctor]</td>
<td class="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;12.3.2 [class.conv.fct]</td>
<td class="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td>No support for inheritance of conversion functions.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;12.4 [class.dtor]</td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>Most of the semantics of destructors are unimplemented.</td>
</tr>
<tr><td>&nbsp;&nbsp;12.5 [class.free]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;12.6 [class.init]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;12.6.1 [class.expl.init]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;12.6.2 [class.base.init]</td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>No actual direct initialization; implicit initialization not checked.</td>
</tr>
<tr><td>&nbsp;&nbsp;12.7 [class.cdtor]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr>
<td>&nbsp;&nbsp;12.8 [class.copy]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td>Copy assignment operators are mostly ignored by semantic analysis.</td>
</tr>
<tr><td>13 [over]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr>
<td>&nbsp;&nbsp;13.1 [over.load]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>Missing name mangling.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;13.2 [over.dcl]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;13.3 [over.match]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;13.3.1 [over.match.funcs]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.1.1 [over.match.call]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.1.1.1 [over.call.func]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.1.1.2 [over.call.object]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td>Missing AST representation for the implicit conversion to a function reference/pointer</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.1.2 [over.match.oper]</td>
<td class="complete" align="center"></td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.1.3 [over.match.ctor]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.1.4 [over.match.copy]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.1.5 [over.match.conv]</td>
<td class="complete" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.1.6 [over.match.ref]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;13.3.2 [over.match.viable]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;13.3.3 [over.match.best]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.3.1 [over.best.ics]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.3.1.1 [over.ics.scs]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.3.1.2 [over.ics.user]</td>
<td class="complete" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.3.1.3 [over.ics.ellipsis]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.3.1.4 [over.ics.ref]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.3.2 [over.ics.rank]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;13.4 [over.over]</td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>Error messages need some work. Without templates or using
declarations, we don't have any ambiguities, so the semantic
analysis is incomplete.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;13.5 [over.oper]</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td>Some overloaded operators can only be called with function syntax, e.g., <code>operator[](x)</code>.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.1 [over.unary]</td>
<td class="na" align="center">N/A</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.2 [over.binary]</td>
<td class="na" align="center">N/A</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.3 [over.ass]</td>
<td class="na" align="center">N/A</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.4 [over.call]</td>
<td class="na" align="center">N/A</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.5 [over.sub]</td>
<td class="na" align="center">N/A</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.6 [over.ref]</td>
<td class="na" align="center">N/A</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.7 [over.inc]</td>
<td class="na" align="center">N/A</td>
<td class="advanced" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;13.6 [over.built]</td>
<td class="na" align="center">N/A</td>
<td class="advanced" align="center"></td>
<td class="medium" align="center"></td>
<td class="broken" align="center"></td>
<td>Missing pointer-to-member versions (p11, p16) and support for
the ternary operator (p24, p25).</td>
</tr>
<tr>
<td>14 [temp]</td>
<td class="basic" align="center">N/A</td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;14.1 [temp.param]</td>
<td class="complete" align="center">&#x2713;</td>
<td class="complete" align="center">&#x2713;</td>
<td class="medium" align="center"></td>
<td class="na" align="center">N/A</td>
<td>Template template parameters cannot actually be used in templates</td>
</tr>
<tr>
<td>&nbsp;&nbsp;14.2 [temp.names]</td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="na" align="center">N/A</td>
<td>Cannot name function template specializations</td>
</tr>
<tr>
<td>&nbsp;&nbsp;14.3 [temp.arg]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="na" align="center">N/A</td>
<td>Cannot name function template specializations</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.3.1 [temp.arg.type]</td>
<td class="complete" align="center">&#x2713;</td>
<td class="complete" align="center">&#x2713;</td>
<td class="complete" align="center"></td>
<td class="na" align="center">N/A</td>
<td>Paragraph 3 will be tested elsewhere</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.3.2 [temp.arg.nontype]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.3.3 [temp.arg.template]</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;14.4 [temp.type]</td>
<td class="na" align="center">N/A</td>
<td class="complete" align="center">&#x2713;</td>
<td class="complete" align="center">&#x2713;</td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;14.5 [temp.decls]</td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.5.1 [temp.class]</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>No out-of-line definitions of the members of a template.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.5.1.1 [temp.mem.func]</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>No out-of-line definitions of the member functions of a class template.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.5.1.2 [temp.mem.class]</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>No out-of-line definitions of the member classes of a class template.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.5.1.3 [temp.static]</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>No out-of-line definitions of the static data members of a class template.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.5.2 [temp.mem]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.5.3 [temp.friend]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.5.4 [temp.class.spec]</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.5.4.1 [temp.class.spec.match]</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="complete" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.5.4.2 [temp.class.order]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.5.5.3 [temp.class.spec.mfunc]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.5.5 [temp.fct]</td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.5.5.1 [temp.over.link]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.5.5.2 [temp.func.order]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;14.6 [temp.res]</td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="na" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.6.1 [temp.local]</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="na" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.6.2 [temp.dep]</td>
<td class="na" align="center">N/A</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="na" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.6.2.1 [temp.dep.type]</td>
<td class="na" align="center">N/A</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="na" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.6.2.2 [temp.dep.expr]</td>
<td class="na" align="center">N/A</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="na" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.6.2.3 [temp.dep.constexpr]</td>
<td class="na" align="center">N/A</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="na" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.6.2.4 [temp.dep.temp]</td>
<td class="na" align="center">N/A</td>
<td class="medium" align="center"></td>
<td class="medium" align="center"></td>
<td class="na" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.6.3 [temp.nondep]</td>
<td class="na" align="center">N/A</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.6.4 [temp.dep.res]</td>
<td class="na" align="center">N/A</td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="na" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.6.4.1 [temp.point]</td>
<td class="na" align="center">N/A</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center"></td>
<td>Only class templates are instantiated</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.6.4.2 [temp.dep.candidate]</td>
<td class="na" align="center">N/A</td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="na" align="center"></td>
<td>Not restricted to functions with external linkage</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.6.5 [temp.inject]</td>
<td class="na" align="center">N/A</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="na" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;14.7 [temp.spec]</td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>Function templates cannot be instantiated</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.7.1 [temp.inst]</td>
<td class="na" align="center">N/A</td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>Function templates cannot be instantiated</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.7.2 [temp.explicit]</td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>Function templates cannot be instantiated</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.7.3 [temp.expl.spec]</td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="basic" align="center"></td>
<td class="broken" align="center"></td>
<td>Only class template specialization is available</td>
</tr>
<tr>
<td>&nbsp;&nbsp;14.8 [temp.fct.spec]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.8.1 [temp.arg.explicit]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.8.2 [temp.deduct]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.8.2.1 [temp.deduct.call]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.8.2.2 [temp.deduct.funcaddr]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.8.2.3 [temp.deduct.conv]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.8.2.4 [temp.deduct.type]</td>
<td class="na" align="center">N/A</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;14.8.3 [temp.over]</td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td class="broken" align="center"></td>
<td></td>
</tr>
<tr>
<td>15 [except]</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;15.1 [except.throw]</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="advanced" align="center"></td>
<td></td>
<td>Does not check for existence of copy constructor and destructor, and some other details</td>
</tr>
<tr>
<td>&nbsp;&nbsp;15.2 [except.ctor]</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;15.3 [except.handle]</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="advanced" align="center"></td>
<td></td>
<td>Not all constraints are checked</td>
</tr>
<tr>
<td>&nbsp;&nbsp;15.4 [except.spec]</td>
<td class="complete" align="center"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;15.5 [except.special]</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;15.5.1 [except.terminate]</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;15.5.2 [except.unexpected]</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;15.5.3 [except.uncaught]</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;15.6 [except.access]</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td class="na" align="center">N/A</td>
<td>Redundant - struck from C++0x</td>
</tr>
<tr><td>16 [cpp]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;16.1 [cpp.cond]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;16.2 [cpp.include]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;16.3 [cpp.replace]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;16.3.1 [cpp.subst]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;16.3.2 [cpp.stringize]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;16.3.3 [cpp.concat]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;16.3.4 [cpp.rescan]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;16.3.5 [cpp.scope]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;16.4 [cpp.line]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;16.5 [cpp.error]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;16.6 [cpp.pragma]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;16.7 [cpp.null]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;16.8 [cpp.predefined]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>A [gram]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.1 [gram.key]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.2 [gram.lex]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.3 [gram.basic]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.4 [gram.expr]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.5 [gram.stmt]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.6 [gram.dcl]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.7 [gram.decl]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.8 [gram.class]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.9 [gram.derived]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.10 [gram.special]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.11 [gram.over]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.12 [gram.temp]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.13 [gram.except]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;A.14 [gram.cpp]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>B [implimits]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>C [diff]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;C.1 [diff.iso]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.1.1 [diff.lex]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.1.2 [diff.basic]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.1.3 [diff.expr]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.1.4 [diff.stat]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.1.5 [diff.dcl]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.1.6 [diff.decl]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.1.7 [diff.class]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.1.8 [diff.special]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.1.9 [diff.cpp]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;C.2 [diff.library]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.2.1 [diff.mods.to.headers]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.2.2 [diff.mods.to.definitions]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C.2.2.2 [diff.wchar.t]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C.2.2.3 [diff.header.iso646.h]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C.2.2.4 [diff.null]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.2.3 [diff.mods.to.declarations]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;C.2.4 [diff.mods.to.behavior]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C.2.4.1 [diff.offsetof]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C.2.4.2 [diff.malloc]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>D [depr]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;D.1 [depr.incr.bool]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;D.2 [depr.static]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;D.3 [depr.access.dcl]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;D.4 [depr.string]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>&nbsp;&nbsp;D.5 [depr.c.headers]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>E [extendid]</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr>
<td colspan="6" align="center" bgcolor="#ffffcc">C++0x Features</td>
</tr>
<tr>
<td>Explicit conversion operators (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf">N2437</a>)</td>
<td class="complete" align="center"></td>
<td class="medium" align="center"></td>
<td class="advanced" align="center"></td>
<td class="broken"></td>
<td>No name mangling; ASTs don't contain calls to conversion operators</td>
</tr>
<tr>
<td>Static assertions (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.pdf">N1720</a>)</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na">N/A</td>
<td></td>
</tr>
<tr>
<td>Deleted functions (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm">N2346</a>)</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="na">N/A</td>
<td></td>
</tr>
<tr>
<td>Rvalue references (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html">N2118</a> + <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2831.html">N2831</a>)</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="broken"></td>
<td></td>
</tr>
<tr>
<td>nullptr (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">N2431</a>)</td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="complete" align="center"></td>
<td class="broken"></td>
<td></td>
</tr>
</table>
<br />
</div>
</body>
</html>