Il comitato per gli standard C ++ è pieno di persone intelligenti che sono pienamente consapevoli della quantità di codice esistente e delle conseguenze dell'introduzione di nuove parole chiave.
Uno degli obiettivi del comitato è quello di mantenere il codice esistente il più possibile funzionante invariato e che sicuramente svolge un ruolo importante quando si decide di aggiungere nuove parole chiave e come denominare tali parole chiave.
Per quanto ne so, quando viene proposta una nuova parola chiave, eseguono un'indagine su un numero di codebase di grandi dimensioni per vedere quanti conflitti creerebbe una nuova parola chiave e se uno qualsiasi di questi conflitti creerebbe una modifica silenziosa del comportamento del programmi.
In base alla proposta per l'aggiunta di nullptr
, l'ortografia della parola chiave ha causato il minor numero di conflitti con il codice esistente:
-
Programmers have often requested that the null pointer constant have a name, and nullptr
appears to be the least likely of the alternative text spellings to conflict with identifiers in existing user programs. For example, a Google search for nullptr cpp
returns a total of merely 150 hits, only one of which appears to use nullptr
in a C++ program.
- The alternative name
NULL
is not available. NULL
is already the name of an implementation-defined macro in the C and C++ standards. If we defined NULL
to be a keyword, it would still be replaced by macros lurking in older code. Also, there might be code “out there” that (unwisely) depended on NULL
being 0
. Finally, identifiers in all caps are conventionally assumed to be macros, testable by #ifdef
, etc.
- The alternative name
null
is impractical. It is nearly as bad as NULL
in that null
is also a commonly used in existing programs as an identifier name and (worse)
as a macro name. For example, a Google search for null cpp
returns about 180,000 hits, of which an estimated 3% or over 5,000 use null
in C++ code as an identifier or as a macro. Another favorite, nil
, is worse still.
- Any other name we have thought of is longer or clashes more often.
Data questa analisi, non mi aspetto che sia necessario effettuare molti aggiustamenti.
In caso contrario, si è previsto l'aggiornamento della base di codice per le modifiche incompatibili all'indietro quando si passa a un nuovo standard.