aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2024-02-08 15:38:35 +0000
committerJonathan Wakely <jwakely@redhat.com>2024-02-08 15:58:14 +0000
commit5fb204aaf34b68c427f5b2bfb933fed72fe3eafb (patch)
tree5d21eb7da31674ce6d49c57e24d2b040ef1bd46e /libstdc++-v3/include
parentd9459129ea8f8c3cbd6150b90e842decba7952a3 (diff)
downloadgcc-5fb204aaf34b68c427f5b2bfb933fed72fe3eafb.zip
gcc-5fb204aaf34b68c427f5b2bfb933fed72fe3eafb.tar.gz
gcc-5fb204aaf34b68c427f5b2bfb933fed72fe3eafb.tar.bz2
libstdc++: Guard tr2::bases and tr2::direct_bases with __has_builtin
These non-standard extensions use GCC-specific built-ins. Use __has_builtin to avoid errors when Clang compiles this header. See https://github.com/llvm/llvm-project/issues/24289 libstdc++-v3/ChangeLog: * include/tr2/type_traits (bases, direct_bases): Use __has_builtin to check if required built-ins are supported.
Diffstat (limited to 'libstdc++-v3/include')
-rw-r--r--libstdc++-v3/include/tr2/type_traits5
1 files changed, 4 insertions, 1 deletions
diff --git a/libstdc++-v3/include/tr2/type_traits b/libstdc++-v3/include/tr2/type_traits
index a7ebaf6..603039d 100644
--- a/libstdc++-v3/include/tr2/type_traits
+++ b/libstdc++-v3/include/tr2/type_traits
@@ -82,20 +82,23 @@ namespace tr2
/// Sequence abstraction metafunctions for manipulating a typelist.
-
+#if __has_builtin(__bases)
/// Enumerate all the base classes of a class. Form of a typelist.
template<typename _Tp>
struct bases
{
typedef __reflection_typelist<__bases(_Tp)...> type;
};
+#endif
+#if __has_builtin(__direct_bases)
/// Enumerate all the direct base classes of a class. Form of a typelist.
template<typename _Tp>
struct direct_bases
{
typedef __reflection_typelist<__direct_bases(_Tp)...> type;
};
+#endif
/// @} group metaprogramming
}