Confirmed users
657
edits
Line 143: | Line 143: | ||
=== Disallowed C++ language features === | === Disallowed C++ language features === | ||
The safety properties that we desire are inherently incompatible with two main classes of C++ features: | The safety properties that we desire are inherently incompatible with two main classes of C++ features: | ||
* Unchecked references. These are C++ pointers and references. Since the language doesn't offer a way to tag them with ownership information, the usage of them in Safe C++ is completely prohibited. | * Unchecked references to objects. These are C++ pointers and references to objects (not primitive types). Since the language doesn't offer a way to tag them with ownership information, the usage of them in Safe C++ is completely prohibited. | ||
* Direct control over lifetimes. For obvious reasons, giving the programmer direct control over lifetimes goes against the goals of Safe C++. C++ keywords new, new[], delete and delete[] are completely prohibited in Safe C++ code. | * Direct control over lifetimes. For obvious reasons, giving the programmer direct control over lifetimes goes against the goals of Safe C++. C++ keywords new, new[], delete and delete[] are completely prohibited in Safe C++ code. | ||