I’m pretty sure I read on an authoritative source somewhere (I believe it was on the WG21 pages) that C++03 was not a technical corrigendum of C++98 but that it was a new release of the C++ Standard.
But nontheless I see only -std=c++98 switch in GCC and others compilers and Alf P Steinbach made a few comments hinting at that it may indeed be a TC of C++98.
So when I’m writing about “C++03”, does it suffice mentioning C++98? As a related question, is it even wrong to use the term “C++03”? Because I think if it is really C++98 TC1, then it seems to me it cannot be called C++03. Just as I’ve never seen someone write C07 for the C99TC3 release.
Yes and no.
C++03 (ISO C++14882:2003) is a standard in its own right, and it is also “just” TC1 because it is only C++98 amended with a set of corrections.
You can say that C++03 is what C++98 was intended to be, the actual wording of C++98 revised to make it say what it was meant to say.
In the committee’s own words:
The extraneous period in there is just quoted literally.
In the words of Wikipedia (which is not an authority, but should be fixed if it’s wrong):
One might argue, however, that value initialization was a new thing and not just a correction. And one might argue that the Technical Corrigendum itself consisted only of the corrections, while the standard amended with those corrections is a different thing, a new standard. Both of these points view make sense contextually, as I see it, although not as absolute context-independent statements.