]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Guard use of new built-in with __has_builtin
authorJonathan Wakely <jwakely@redhat.com>
Thu, 29 Sep 2022 10:30:05 +0000 (11:30 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Wed, 5 Oct 2022 12:39:28 +0000 (13:39 +0100)
Another case where I forgot that non-GCC compilers don't have this
built-in yet.

libstdc++-v3/ChangeLog:

* include/bits/invoke.h (__invoke_r): Check
__has_builtin(__reference_converts_from_temporary) before using
built-in.

libstdc++-v3/include/bits/invoke.h

index 8724a764f7390e42a437753d6855ca166af31ed7..8fa8cf876d8d78106260501156929abedc896818 100644 (file)
@@ -130,8 +130,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     {
       using __result = __invoke_result<_Callable, _Args...>;
       using __type = typename __result::type;
+#if __has_builtin(__reference_converts_from_temporary)
       static_assert(!__reference_converts_from_temporary(_Res, __type),
                    "INVOKE<R> must not create a dangling reference");
+#endif
       using __tag = typename __result::__invoke_type;
       return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn),
                                        std::forward<_Args>(__args)...);