After implementation and deployment of this rule and the paragraphs (6.3) referenced in the note, it turns out that functions defined “static inline” in headers (often shared between C and C++) are more common than realized and the restriction of not being them to refer such names/entities constitutes a huge practical usability problem
Proposed change:
Permit uses of names/entities defined as “static inline” in header units, and problem that each translation unit that odr-uses those names as a TU-local copy of those definitions, which corresponds to the behaviour if the header units had been #included.
After implementation and deployment of this rule and the paragraphs (6.3) referenced in the note, it turns out that functions defined “static inline” in headers (often shared between C and C++) are more common than realized and the restriction of not being them to refer such names/entities constitutes a huge practical usability problem
Proposed change:
Permit uses of names/entities defined as “static inline” in header units, and problem that each translation unit that odr-uses those names as a TU-local copy of those definitions, which corresponds to the behaviour if the header units had been #included.