================
@@ -671,10 +671,8 @@ static void InitializeCPlusPlusFeatureTestMacros(const
LangOptions &LangOpts,
LangOpts.CPlusPlus23 ? "202211L"
: LangOpts.CPlusPlus17 ? "201603L"
: "200907");
- Builder.defineMacro("__cpp_static_assert", LangOpts.CPlusPlus26 ? "202306L"
- : LangOpts.CPlusPlus17
- ? "201411L"
- : "200410");
+ // C++17 / C++26 static_assert backported
+ Builder.defineMacro("__cpp_static_assert", "202306L");
----------------
philnik777 wrote:
> https://eel.is/c++draft/cpp.predefined has two styles of predefined macros.
> Ones where there is normative text explaining what the macro has to expand
> to, and others where it simply lists a value in a table. Nothing in that
> subclause says "shall be defined as" for the values in the table. It just
> says the _names_ shall be defined.
Hmm, true. The library version seems less ambiguous, since there it's in the
synopsis as `#define __cpp_lib_whatever <some_number>L`.
> Probably one Core issue and one Library issue.
Sounds good. Who should file them?
> Huh? The idiomatic use is `#if defined(__cplusplus) && __cpp_whatever >=
> 201907L`, so bumping to a later revision is not a breaking change. It's of
> course possible for a user to test using `==` or some other approach, but
> they're using the feature testing macro incorrectly at that point.
I'm more thinking of stuff like this: https://godbolt.org/z/qzaMaP4sW.
https://github.com/llvm/llvm-project/pull/102044
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits