[gcc r10-6288] libstdc++: Avoid using sizeof with function types (PR 93470)

Jonathan Wakely redi@gcc.gnu.org
Tue Jan 28 13:27:00 GMT 2020


https://gcc.gnu.org/g:72a9fd209b6db3b5f81fbb008e22ea93c00465e5

commit r10-6288-g72a9fd209b6db3b5f81fbb008e22ea93c00465e5
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Jan 28 13:24:09 2020 +0000

    libstdc++: Avoid using sizeof with function types (PR 93470)
    
    	PR libstdc++/93470
    	* include/bits/refwrap.h (reference_wrapper::operator()): Restrict
    	static assertion to object types.

Diff:
---
 libstdc++-v3/ChangeLog              | 4 ++++
 libstdc++-v3/include/bits/refwrap.h | 3 ++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d75ebbc..c72d4a4 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -10,6 +10,10 @@
 
 2020-01-28  Jonathan Wakely  <jwakely@redhat.com>
 
+	PR libstdc++/93470
+	* include/bits/refwrap.h (reference_wrapper::operator()): Restrict
+	static assertion to object types.
+
 	PR libstdc++/93325
 	* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
 	clock_gettime instead of explicit glibc version check.
diff --git a/libstdc++-v3/include/bits/refwrap.h b/libstdc++-v3/include/bits/refwrap.h
index 2bcd44d..717aa01 100644
--- a/libstdc++-v3/include/bits/refwrap.h
+++ b/libstdc++-v3/include/bits/refwrap.h
@@ -343,7 +343,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<type>)
+	    static_assert(sizeof(type), "type must be complete");
 #endif
 	  return std::__invoke(get(), std::forward<_Args>(__args)...);
 	}



More information about the Libstdc++-cvs mailing list