diff options
author | Corentin Jabot <corentin.jabot@gmail.com> | 2022-02-08 12:09:03 -0500 |
---|---|---|
committer | Aaron Ballman <aaron@aaronballman.com> | 2022-02-08 12:10:47 -0500 |
commit | c1512250960bd247519a9f959ad4af202402dcc4 (patch) | |
tree | 777da02df015fac62ce35deab5ab0c6250d6904f /clang/lib/Frontend/InitPreprocessor.cpp | |
parent | caf7f05c1c7320fe29c2ec4ebecac91a5c970633 (diff) | |
download | llvm-c1512250960bd247519a9f959ad4af202402dcc4.zip llvm-c1512250960bd247519a9f959ad4af202402dcc4.tar.gz llvm-c1512250960bd247519a9f959ad4af202402dcc4.tar.bz2 |
[C++2b] Implement multidimentional subscript operator
Implement P2128R6 in C++23 mode.
Unlike GCC's implementation, this doesn't try to recover when a user
meant to use a comma expression.
Because the syntax changes meaning in C++23, the patch is *NOT*
implemented as an extension. Instead, declaring an array with not
exactly 1 parameter is an error in older languages modes. There is an
off-by-default extension warning in C++23 mode.
Unlike the standard, we supports default arguments;
Ie, we assume, based on conversations in WG21, that the proposed
resolution to CWG2507 will be accepted.
We allow arrays OpenMP sections and C++23 multidimensional array to
coexist:
[a , b] multi dimensional array
[a : b] open mp section
[a, b: c] // error
The rest of the patch is relatively straight forward: we take care to
support an arbitrary number of arguments everywhere.
Diffstat (limited to 'clang/lib/Frontend/InitPreprocessor.cpp')
-rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index e259ab4..bf8a0b2 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -642,6 +642,7 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts, Builder.defineMacro("__cpp_implicit_move", "202011L"); Builder.defineMacro("__cpp_size_t_suffix", "202011L"); Builder.defineMacro("__cpp_if_consteval", "202106L"); + Builder.defineMacro("__cpp_multidimensional_subscript", "202110L"); } if (LangOpts.Char8) Builder.defineMacro("__cpp_char8_t", "201811L"); |