Feature Matrix
Each feature refers to a section of the 2003 C++ Standard (ISO/IEC 14882:2003(E)).
- "DONE" means that the feature is implemented and supposedly bug-free.
- "MOSTLY DONE" means that the feature is implemented but has some known bugs or minor limitations. The test tool may give you further information concerning these bugs and limitations.
- "WIP" (Work In Progress) means that the feature is partially implemented.
- "TODO" means that the implementation has not started yet.
- "N/A" means that the associated feature and analysis type are unrelated.
| Feature | Syntax analysis |
Semantic analysis |
Linkage | Comment |
|---|---|---|---|---|
| Lexical conventions [lex] | DONE | WIP | N/A | |
| Literals [lex.literal] | DONE | DONE | N/A | |
| Integer literals [lex.icon] | DONE | DONE | N/A | |
| Character literals [lex.ccon] | DONE | DONE | N/A | |
| Floating literals [lex.fcon] | DONE | DONE | N/A | |
| String literals [lex.string] | DONE | DONE | N/A | |
| Boolean literals [lex.bool] | DONE | DONE | N/A | |
| Basic concepts [basic] | N/A | WIP | WIP | |
| Name lookup [basic.lookup] | N/A | WIP | N/A | |
| Unqualified name lookup [basic.lookup.unqual] | N/A | WIP | N/A | OK, except for §3 and §9 to §13 |
| Argument-dependent name lookup [basic.lookup.koenig] | N/A | TODO | N/A | |
| Qualified name lookup [basic.lookup.qual] | N/A | WIP | N/A | |
| Class members [class.qual] | N/A | WIP | N/A | |
| Namespace members [namespace.qual] | N/A | MOSTLY DONE | N/A | OK, except for §5 and template-ids |
| Elaborated type specifiers [basic.lookup.elab] | N/A | WIP | N/A | |
| Class member access [basic.lookup.classref] | N/A | TODO | N/A | |
| Using-directives and namespace aliases [basic.lookup.udir] | N/A | DONE | N/A | |
| Standard conversions [conv] | N/A | WIP | N/A | |
| Lvalue-to-rvalue conversion [conv.lval] | N/A | TODO | N/A | |
| Array-to-pointer conversion [conv.array] | N/A | TODO | N/A | |
| Function-to-pointer conversion [conv.func] | N/A | TODO | N/A | |
| Qualification conversions [conv.qual] | N/A | TODO | N/A | |
| Integral promotions [conv.prom] | N/A | WIP | N/A | |
| Floating point promotion [conv.fpprom] | N/A | WIP | N/A | |
| Integral conversions [conv.integral] | N/A | TODO | N/A | |
| Floating point conversions [conv.double] | N/A | WIP | N/A | |
| Floating-integral conversions [conv.fpint] | N/A | WIP | N/A | |
| Pointer conversions [conv.ptr] | N/A | TODO | N/A | |
| Pointer to member conversions [conv.mem] | N/A | TODO | N/A | |
| Boolean conversions [conv.bool] | N/A | WIP | N/A | |
| Expressions [expr] | DONE | WIP | WIP | |
| Primary expressions [expr.prim] | DONE | WIP | N/A | |
| Postfix expressions [expr.post] | DONE | WIP | N/A | |
| Unary expressions [expr.unary] | DONE | WIP | N/A | |
| Explicit type conversion [expr.cast] | DONE | TODO | N/A | |
| Pointer-to-member operators [expr.mptr.oper] | DONE | TODO | N/A | |
| Multiplicative operators [expr.mul] | DONE | WIP | N/A | |
| Additive operators [expr.add] | DONE | WIP | N/A | |
| Shift operators [expr.shift] | DONE | WIP | N/A | |
| Relational operators [expr.rel] | DONE | WIP | N/A | |
| Equality operators [expr.eq] | DONE | WIP | N/A | |
| Bitwise AND operator [expr.bit.and] | DONE | WIP | N/A | |
| Bitwise exclusive OR operator [expr.xor] | DONE | WIP | N/A | |
| Bitwise inclusive OR operator [expr.or] | DONE | WIP | N/A | |
| Logical AND operator [expr.log.and] | DONE | WIP | N/A | |
| Logical OR operator [expr.log.or] | DONE | WIP | N/A | |
| Conditional operator [expr.cond] | DONE | WIP | N/A | |
| Assignment operators [expr.ass] | DONE | WIP | N/A | |
| Comma operator [expr.comma] | DONE | TODO | N/A | |
| Constant expressions [expr.const] | DONE | TODO | N/A | |
| Statements [stmt.stmt] | DONE | TODO | TODO | |
| Declarations [dcl.dcl] | DONE | WIP | WIP | |
| Specifiers [dcl.spec] | DONE | WIP | WIP | |
| Storage class specifiers [dcl.stc] | DONE | WIP | TODO | |
| Function specifiers [dcl.fct.spec] | DONE | DONE | DONE | |
| The typedef specifier [dcl.typedef] | DONE | WIP | WIP | OK, except for §2 to §5 |
| The friend specifier [dcl.friend] | DONE | TODO | TODO | Ignored |
| Type specifiers [dcl.type] | DONE | WIP | WIP | |
| The cv-qualifiers [dcl.type.cv] | DONE | DONE | DONE | |
| Simple type specifiers [dcl.type.simple] | DONE | DONE | DONE | |
| Elaborated type specifiers [dcl.type.elab] | DONE | WIP | WIP | |
| Enumeration declarations [dcl.enum] | DONE | MOSTLY DONE | DONE | OK, except for the type of the constants (also known as the underlying type of the enumeration), which is currently always set to int. |
| Namespaces [basic.namespace] | DONE | WIP | WIP | |
| Namespace definition [namespace.def] | DONE | DONE | DONE | |
| Namespace alias [namespace.alias] | DONE | MOSTLY DONE | N/A | OK, except for §3 and §4 |
| The using declaration [namespace.udecl] | DONE | WIP | N/A | |
| Using directive [namespace.udir] | DONE | MOSTLY DONE | N/A | OK, except §4, which requires the support of linkage specifications |
| The asm declaration [dcl.asm] | DONE | TODO | TODO | Ignored |
| Linkage specifications [dcl.link] | DONE | TODO | TODO | |
| Declarators [dcl.decl] | DONE | WIP | WIP | |
| Type names [dcl.name] | DONE | DONE | DONE | |
| Ambiguity resolution [dcl.ambig.res] | DONE | TODO | TODO | |
| Meaning of declarators [dcl.meaning] | DONE | WIP | WIP | |
| Pointers [dcl.ptr] | DONE | DONE | DONE | |
| References [dcl.ref] | DONE | DONE | DONE | |
| Pointers to members [dcl.mptr] | DONE | DONE | DONE | |
| Arrays [dcl.array] | DONE | DONE | DONE | |
| Functions [dcl.fct] | DONE | WIP | WIP | |
| Default arguments [dcl.fct.default] | DONE | TODO | TODO | Ignored |
| Function definitions [dcl.fct.def] | DONE | WIP | TODO | The function bodies are ignored. |
| Initializers [dcl.init] | DONE | TODO | TODO | Ignored |
| Classes [class] | DONE | WIP | WIP | |
| Class names [class.name] | DONE | DONE | DONE | |
| Class members [class.mem] | DONE | WIP | WIP | |
| Member functions [class.mfct] | DONE | WIP | WIP | |
| Nonstatic member functions [class.mfct.nonstatic] | DONE | WIP | WIP | |
| The this pointer [class.this] | DONE | TODO | TODO | |
| Static members [class.static] | DONE | WIP | WIP | |
| Static member functions [class.static.mfct] | DONE | WIP | WIP | |
| Static data members [class.static.data] | DONE | WIP | WIP | |
| Unions [class.union] | DONE | MOSTLY DONE | DONE | There's currently no limitation on the nature of the members (notably static members). |
| Bit-fields [class.bit] | DONE | MOSTLY DONE | DONE | OK, except for their sizes (requires the support of expressions) |
| Nested class declarations [class.nest] | DONE | DONE | DONE | |
| Local class declarations [class.local] | DONE | TODO | TODO | |
| Nested type names [class.nested.type] | DONE | DONE | DONE | |
| Derived classes [class.derived] | DONE | WIP | WIP | |
| Multiple base classes [class.mi] | DONE | DONE | DONE | |
| Member name lookup [class.member.lookup] | DONE | WIP | N/A | |
| Virtual functions [class.virtual] | DONE | WIP | WIP | |
| Abstract classes [class.abstract] | DONE | WIP | WIP | |
| Member access control [class.access] | DONE | WIP | N/A | |
| Special member functions [special] | DONE | WIP | WIP | |
| Constructors [class.ctor] | DONE | WIP | WIP | |
| Temporary objects [class.temporary] | DONE | TODO | TODO | |
| Conversions [class.conv] | DONE | WIP | WIP | |
| Destructors [class.dtor] | DONE | WIP | WIP | |
| Free store [class.free] | DONE | TODO | TODO | |
| Initialization [class.init] | DONE | TODO | TODO | |
| Construction and destruction [class.cdtor] | DONE | TODO | TODO | |
| Copying class objects [class.copy] | DONE | TODO | TODO | |
| Overloading [over] | DONE | TODO | TODO | |
| Templates [temp] | DONE | TODO | TODO | |
| Exception handling [except] | DONE | TODO | TODO |
