From 08ed34284f4e6ac9a4e647d9caa82ee4b4de0fa3 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 5 Mar 2020 16:52:19 +0000 Subject: [PATCH] libstdc++: Avoid using sizeof with function types (PR 93470) Backport from mainline 2020-01-28 Jonathan Wakely PR libstdc++/93470 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict static assertion to object types. --- libstdc++-v3/ChangeLog | 16 ++++++++++++++++ libstdc++-v3/include/bits/refwrap.h | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index bcac85143f2e..e99784118c6a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,19 @@ +2020-03-05 Jonathan Wakely + + Backport from mainline + 2020-01-28 Jonathan Wakely + + PR libstdc++/93470 + * include/bits/refwrap.h (reference_wrapper::operator()): Restrict + static assertion to object types. + +2020-01-28 Jonathan Wakely + + PR libstdc++/93325 + * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for + clock_gettime instead of explicit glibc version check. + * configure: Regenerate. + 2020-03-01 H.J. Lu * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. diff --git a/libstdc++-v3/include/bits/refwrap.h b/libstdc++-v3/include/bits/refwrap.h index 6b4335a22ac6..d95f7c571726 100644 --- a/libstdc++-v3/include/bits/refwrap.h +++ b/libstdc++-v3/include/bits/refwrap.h @@ -334,7 +334,8 @@ _GLIBCXX_MEM_FN_TRAITS(&& noexcept, false_type, true_type) operator()(_Args&&... __args) const { #if __cplusplus > 201703L - static_assert(sizeof(type), "type must be complete"); + if constexpr (is_object_v) + static_assert(sizeof(type), "type must be complete"); #endif return std::__invoke(get(), std::forward<_Args>(__args)...); } -- 2.47.3