On Thu, May 23, 2019 at 09:05:00AM +0200, Martin Husemann wrote: > On Thu, May 23, 2019 at 12:03:33AM +0200, Kamil Rytarowski wrote: > > >> -#if ((__cplusplus - 0) < 201103L) > > >> +#if defined(_ISOC11_SOURCE) || (__STDC_VERSION__ - 0) >= 201101L > > Am I missing something or does this (in addition to the intended change) > make the macro invisible for C++ compilations? Is that intended? If so, > shouldn't it be explained in the log message? > > Martin
Per the standards: static_assert / _Static_assert is meaningful for >=C11 static_assert is meaningful for >=C++11 >= C++11 : handled by libstdc++ / libc++ >= C11 : handled by us, in this case and before. Should it mean something for: < C++11 < C11 The older version attempted to provide < C++11 and < C11 static_assert, too. This is causing problems because g++ does not provide _Static_assert in the case of building older C++ code. Kamil argued you should just not use it if it doesn't work. My argument was that we shouldn't provide a broken definition. The code from the bug report did: #if defined(static_assert) .. fallback definition .. #endif I think it is reasonable for this to work. We can probably keep providing it for all C standards, I guess. that was the "that's so solaris" argument. GCC does not cause problems with that.