| 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
|
| 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
|
| String switches
| Yes
| No
| No
| Yes
| 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
| Yes
| Yes
|
| Nested classes
| Yes
| Yes
| Yes
| Yes
| Yes
|
| Inner (adaptor) classes
| No
| No
| No
| No
| Yes
|
| Covariant return types
| Yes
| No
| Yes
| No
| No
|
| Properties
| Yes
| No
| No
| Yes
| 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
|
| Generic Programming
|
|
|
|
|
|
| Templates
| Yes
| No
| Yes
| No
| No
|
| Mixins
| Yes
| No
| No
| No
| No
|
| typeof
| Yes
| No
| No
| Yes
| No
|
| foreach
| Yes
| No
| No
| Yes
| No
|
| Constraints
| Yes
| No
| No
| No
| No
|
| Reliability
|
|
|
|
|
|
| Contract Programming
| 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 (automatic destructors)
| 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
|
|
|
|
|
|
| C-style syntax
| Yes
| Yes
| Yes
| Yes
| Yes
|
| Enumerated types
| Yes
| Yes
| Yes
| Yes
| No
|
| Support all C types
| Yes
| Yes
| No
| No
| No
|
| 80 bit 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
| No
| No
| No
| No
|
| Generates standard object files
| Yes
| Yes
| Yes
| No
| No
|
| Macro text preprocessor
| No
| Yes
| Yes
| No
| No
|
| Other
|
|
|
|
|
|
| Conditional compilation
| Yes
| Yes
| Yes
| Yes
| No
|
| Unicode source text
| Yes
| Yes
| Yes
| Yes
| Yes
|