| Garbage Collection
| Yes
| No
| No
| Yes
| Yes
|
| Functions
|
|
|
|
|
|
| Function delegates
| Yes
| No
| No
| Yes
| No
|
| Function overloading
| Yes
| No
| Yes
| Yes
| Yes
|
| Out function parameters
| Yes
| Yes
| Yes
| Yes
| No
|
| Nested functions
| Yes
| No
| No
| No
| No
|
| Function literals
| Yes
| No
| No
| No
| No
|
| Dynamic closures
| Yes
| No
| No
| No
| No
|
| Covariant return types
| Yes
| No
| Yes
| No
| No
|
| Arrays
|
|
|
|
|
|
| Lightweight arrays
| Yes
| Yes
| Yes
| No
| No
|
| Resizeable arrays
| Yes
| No
| No
| No
| No
|
| Arrays of bits
| Yes
| No
| No
| No
| No
|
| Built-in strings
| Yes
| No
| No
| Yes
| Yes
|
| Array slicing
| Yes
| No
| No
| No
| No
|
| Array bounds checking
| Yes
| No
| No
| Yes
| Yes
|
| Associative arrays
| Yes
| No
| No
| No
| No
|
| Strong typedefs
| Yes
| No
| No
| No
| No
|
| Aliases
| Yes
| Yes
| Yes
| No
| No
|
| OOP
|
|
|
|
|
|
| Object Oriented
| Yes
| No
| Yes
| Yes
| Yes
|
| Multiple Inheritance
| No
| No
| Yes
| No
| No
|
| Interfaces
| Yes
| No
| Yes
| Yes
| Yes
|
| Operator overloading
| Yes
| No
| Yes
| Yes
| No
|
| Modules
| Yes
| No
| Yes
| Yes
| Yes
|
| Dynamic class loading
| No
| No
| No
| No
| Yes
|
| Inner classes
| No
| No
| No
| No
| Yes
|
| Covariant return types
| Yes
| No
| Yes
| No
| No
|
| Performance
|
|
|
|
|
|
| Inline assembler
| Yes
| Yes
| Yes
| No
| No
|
| Direct access to hardware
| Yes
| Yes
| Yes
| No
| No
|
| Lightweight objects
| Yes
| Yes
| Yes
| Yes
| No
|
| Explicit memory allocation control
| Yes
| Yes
| Yes
| No
| No
|
| Independent of VM
| Yes
| Yes
| Yes
| No
| No
|
| Direct native code gen
| Yes
| Yes
| Yes
| No
| No
|
| Templates
| Yes
| No
| Yes
| No
| No
|
| Reliability
|
|
|
|
|
|
| Design by Contract
| Yes
| No
| No
| No
| No
|
| Unit testing
| Yes
| No
| No
| No
| No
|
| Static construction order
| Yes
| No
| No
| Yes
| Yes
|
| Guaranteed initialization
| Yes
| No
| No
| Yes
| Yes
|
| RAII
| Yes
| No
| Yes
| Yes
| No
|
| Exception handling
| Yes
| No
| Yes
| Yes
| Yes
|
| try-catch-finally blocks
| Yes
| No
| No
| Yes
| Yes
|
| Thread synchronization primitives
| Yes
| No
| No
| Yes
| Yes
|
| Compatibility
|
|
|
|
|
|
| Algol-style syntax
| Yes
| Yes
| Yes
| Yes
| Yes
|
| Enumerated types
| Yes
| Yes
| Yes
| Yes
| No
|
| Support all C types
| Yes
| Yes
| No
| No
| No
|
| Long double floating point
| Yes
| Yes
| Yes
| No
| No
|
| Complex and Imaginary
| Yes
| Yes
| No
| No
| No
|
| Direct access to C
| Yes
| Yes
| Yes
| No
| No
|
| Use existing debuggers
| Yes
| Yes
| Yes
| No
| No
|
| Struct member alignment control
| Yes
| Yes
| Yes
| No
| No
|
| Generates standard object files
| Yes
| Yes
| Yes
| No
| No
|
| Macro preprocessor
| No
| Yes
| Yes
| No
| No
|
| Other
|
|
|
|
|
|
| Conditional compilation
| Yes
| Yes
| Yes
| Yes
| No
|