8. Estándares del lenguaje

Durante todo el libro, cuando se haga referencia al estándar ISO de C, generalmente se dirá «C». Sólo si se necesita distinguir entre el C estándar y versiones más antiguas, previas al estándar, se hará una distinción.

Cuando se escribió este libro, el Comité de Estándares de C++ ya había terminado de trabajar en el lenguaje. Por eso, se usará el término C++ Estándar para referirse al lenguaje estandarizado. Si se hace referencia simplemente a C++, debería asumir que se quiere decir «C++ Estándar».

Hay alguna confusión sobre el nombre real del Comité de Estándares de C++ y el nombre del estándar mismo. Steve Clamage, el presidente del comité, clarificó esto:

Hay dos comités de estandarización de C++: el comité NCITS (antiguamente X3) J16 y el comité ISO JTC1/SC22/WG14. ANSI autoriza a NCITS a crear comités técnicos para desarrollar estándares nacionales americanos.

J16 se constituyó en 1989 para crear un estándar americano para C++. Hacia 1991 se constituyó WG14 para crear un estándar internacional. El proyecto J16 se convirtió en un proyecto «Tipo I» (Internacional) y se subordinó al esfuerzo de estandarización de ISO.

Los dos comités se reúnen al mismo tiempo en el mismo sitio, y el voto de J16 constituye el voto americano en WG14. WG14 delega el trabajo técnico en J16. WG14 vota sobre el trabajo técnico de J16.

El estándar de C++ fue creado originalmente como un estándar ISO. ANSI votó más tarde (como recomendaba J16) para adoptar el estándar ISO de C++ como el estándar americano para C++.

Por eso, «ISO» es la forma correcta de referirse al Estándar de C++.

8.1. Soporte del lenguaje

Puede que su compilador no disponga de todas las características discutidas en este libro, especialmente si no tiene la versión más reciente del compilador. Implementar un lenguaje como C++ es una tarea hercúlea, y puede esperar que las características aparecerán poco a poco en lugar de todas a la vez. Pero si prueba uno de los ejemplos del libro y obtiene un montón de errores del compilador, no es necesariamente un error en el código o en el compilador; simplemente puede no estar implementado aún en su compilador particular.