¿Es C++03 una nueva versión del estándar C++ o simplemente un Corrigendum Técnico (TC) de C++98?


Estoy bastante seguro de que leí en una fuente autorizada en algún lugar (creo que estaba en las páginas del WG21) que C++03 era no una corrección técnica de C++98, sino que era una nueva versión del Estándar C++.

Pero sin embargo solo veo -std=c++98 cambiar en GCC y otros compiladores y Alf P Steinbach hizo un pocos comentarios insinuando que de hecho puede ser un TC de C++98.

Así que cuando estoy escribiendo sobre "C++03", ¿es suficiente mencionar C++98? Como cuestión conexa, ¿es incluso incorrecto usar el término "C++03"? Porque creo que si realmente es C++98 TC1, entonces me parece que no se puede llamar C++03. Al igual que nunca he visto a alguien escribir C07 para el lanzamiento de C99TC3.

Author: Community, 2011-11-27

2 answers

Sí y no.

C++03 (ISO C++14882:2003) es un estándar por derecho propio, y también es "solo" TC1 porque es solo C++98 modificado con un conjunto de correcciones.

Se puede decir que C++03 es lo que C++98 estaba destinado a ser, la redacción real de C++98 revisado para que diga lo que estaba destinado a decir.

En las propias palabras del comité :

" La primera edición de ISO/IEC 14882 se publicó en 1998. En 2003 se aprobó una corrección técnica . y el estándar fue publicado de nuevo como la edición de 2003."

El período extraño allí se cita literalmente.

En las palabras de Wikipedia (que no es una autoridad, pero debe arreglarse si está mal):

"Durante algunos años después del lanzamiento oficial del estándar, el comité procesó informes de defectos y publicó una versión corregida del estándar C++, ISO/IEC 14882:2003, en 2003."

Uno podría argumentar, sin embargo, esa inicialización de valores era algo nuevo y no solo una corrección. Y se podría argumentar que el Corrigendum Técnico en sí solo consistía en las correcciones, mientras que el estándar enmendado con esas correcciones es una cosa diferente, un nuevo estándar. Ambos puntos de vista tienen sentido contextualmente, como yo lo veo, aunque no como declaraciones absolutas independientes del contexto.

 9
Author: Cheers and hth. - Alf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-27 19:40:48

Es un estándar completamente nuevo. Creo que comenzó como solo un TC, por lo que se produce la confusión, y ciertamente es efectivamente solo una versión de corrección de errores. Sin embargo, hubo cambios y vale la pena saber si estás hablando de 98 o 03.

 1
Author: Puppy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-27 13:16:42