| Avoid implementation defined behaviour. |
| Use standard language features and standard library functions in preference to extra functionality provided by the operating system or environment. |
| Do not exceed the translation limits imposed by the ISO C++ Standard. |
| Do not use compiler specific language or pre-processor extensions. |
| Do not use the 'asm' declaration. |
| Do not make any assumptions about the internal representation of a value or object. |
| Do not cast a pointer to fundamental type, to a pointer to a more restrictively aligned fundamental type. |