| All functions that have the same name should have similar behaviour, varying only in the number and/or types of parameters. |
| Enclose all non-member functions that are not part of the external interface in the unnamed namespace in the source file. |
| Specify the name of each function parameter in both the function declaration and the function definition. Use the same names in the function declaration and definition. |
| Use pass-by-reference in preference to pass by value or pass by pointer. |
| Declare read-only parameters of class type as const references. Pass by value read-only parameters that are of a fundamental type. |
| Do not use ellipsis '...' in function parameters. |
| A function should not return a reference or a pointer to an automatic variable defined within the function. Instead, it should return a copy of the object. |
| Only declare trivial functions 'inline'. |
| Do not overload on both numeric and pointer types. |