mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-14 22:01:17 +08:00
libstdc++: Guard use of new built-in with __has_builtin
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.
This commit is contained in:
parent
4c451631f7
commit
dc70f3f81b
@ -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)...);
|
||||
|
Loading…
x
Reference in New Issue
Block a user