On 25 Aug 2017, at 07:32, Mark Millard <mar...@dsl-only.net> wrote:
> As I remember _Static_assert is from C11, not
> the older C99.
In pre-C11 dialects of C, _Static_assert is an identifier reserved for the
implementation. sys/cdefs.h defines it to generate a zero-length array if the
condition is true or a negative-length array if it is false, emulating the
behaviour (though giving less helpful error messages)
> As I understand head/sys/dev/nvme/nvme.h use by
> C++ code could now reject attempts to use
> _Static_assert .
In C++, _Static_assert is an identifier reserved for the implementation, but in
C++11 or newer static_assert is a keyword. sys/cdefs.h defines _Static_assert
to static_assert for newer versions of C++ and defines it to the
C-before-11-compatible version for C++-before-11.
TL;DR: We have gone to a lot of effort to ensure that these keywords work in
all C/C++ dialects, please use them, please report bugs if you find a case
where they don’t work.
email@example.com mailing list
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"