From 273d0e6149a8326284ec1e385e83c8728c41ff68 Mon Sep 17 00:00:00 2001 From: Nikolas Klauser Date: Fri, 27 Sep 2024 22:11:14 +0200 Subject: [PATCH] [Clang] Add __builtin_common_reference --- clang/docs/LanguageExtensions.rst | 17 + clang/include/clang/Basic/BuiltinTemplates.td | 30 +- clang/include/clang/Sema/Sema.h | 19 + clang/lib/Sema/SemaExprCXX.cpp | 92 +---- clang/lib/Sema/SemaTemplate.cpp | 353 +++++++++++++++++- clang/lib/Sema/SemaType.cpp | 75 ++++ .../SemaCXX/type-trait-common-reference.cpp | 136 +++++++ .../include/__type_traits/common_reference.h | 37 +- libcxx/include/module.modulemap | 1 + 9 files changed, 642 insertions(+), 118 deletions(-) create mode 100644 clang/test/SemaCXX/type-trait-common-reference.cpp diff --git a/clang/docs/LanguageExtensions.rst b/clang/docs/LanguageExtensions.rst index 3b8a9cac6587a..d5282758948cd 100644 --- a/clang/docs/LanguageExtensions.rst +++ b/clang/docs/LanguageExtensions.rst @@ -1677,6 +1677,23 @@ Builtin type aliases Clang provides a few builtin aliases to improve the throughput of certain metaprogramming facilities. +__builtin_common_reference +-------------------------- + +.. code-block:: c++ + + template