options/internal: fix static asserts for pre-C++03 #1181
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit correctly checks whether the C++ standard is new enough, and if so, uses the standard-defined
static_assert
. In the case of C, gcc and clang implement_Static_assert
as an extension irrespective of the chosen C standard. Otherwise, we fall back to not checking the condition. We need to do theextern int
hack in order to not produce errors in pedantic mode, as a single semicolon or(void)0
at file scope give warnings or errors then.This was originally discovered when compiling libstdc++, which uses
-std=gnu++98
and was throwing errors.