https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121811

--- Comment #16 from Jonathan Wakely <redi at gcc dot gnu.org> ---
That would allow this in C++: ckd_add(&i, 'a', true)

But C++26 says that's ill-formed:

  Mandates: Each of the types type1, type2, and type3 is a cv-unqualified
signed
  or unsigned integer type.

Maybe that's OK, because if you include <stdckdint.h> in C++26 you should get
the C++ library's header, which should enforce the rules properly. If the C++
lib doesn't provide it yet, then you get the GCC ginclude/stdckdint.h one and
it isn't fully conforming.

But the fact it defines the __STDC_VERSION_STDCKDINT_H__ macro to the correct
value suggests it should be fully conforming.

I think I'll file an NB comment for C++26 saying that C++ should add its own
macro to that file (and stdbit.h) so that programs can tell whether they're
getting a C++-aware header or not. The current spec doesn't make that possible.

Reply via email to