I already discussed that fact that struct tags are not identifiers in C++, and in particular that a tag name can be used as the name of a types. Today I learned that the rules for that are even more complicated than I thought. In C an identifier that has been used as a tag (for struct
, union
or enum
) can freely be used as another identifier (variable, typedef
, label). In C++ only almost: there is one sort of identifiers it can’t be used for, typedef
unless it refers to the same type as the tag.
Month: April 2012
C11 defects: underspecification of tss_t
Section 7.26.6 “Thread-specific storage functions” of C11 is severely underspecified since it uses terms that are not introduced (so far) in the context of C. This is really a pity, since POSIX also has pthread_key_t
that is completely feature equivalent and for which the specification is much more complete.
Jacob Navia had observed that at several occasions in comp.std.c
but it seems that he had not got enough attention such that this had made it in a defect report.