diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -597,8 +597,10 @@ Builder.defineMacro("__cpp_using_enum", "201907L"); } // C++2b features. - if (LangOpts.CPlusPlus2b) + if (LangOpts.CPlusPlus2b) { + Builder.defineMacro("__cpp_implicit_move", "202011L"); Builder.defineMacro("__cpp_size_t_suffix", "202011L"); + } if (LangOpts.Char8) Builder.defineMacro("__cpp_char8_t", "201811L"); Builder.defineMacro("__cpp_impl_destroying_delete", "201806L"); diff --git a/clang/test/Lexer/cxx-features.cpp b/clang/test/Lexer/cxx-features.cpp --- a/clang/test/Lexer/cxx-features.cpp +++ b/clang/test/Lexer/cxx-features.cpp @@ -31,6 +31,10 @@ // --- C++2b features --- +#if check(implicit_move, 0, 0, 0, 0, 0, 202011) +#error "wrong value for __cpp_implicit_move" +#endif + #if check(size_t_suffix, 0, 0, 0, 0, 0, 202011) #error "wrong value for __cpp_size_t_suffix" #endif