[gcc r12-1536] libstdc++: Use named struct for __decay_copy

Jonathan Wakely redi@gcc.gnu.org
Wed Jun 16 13:31:31 GMT 2021


https://gcc.gnu.org/g:c25e3bf87975280a603ff18fba387c6707ce4a95

commit r12-1536-gc25e3bf87975280a603ff18fba387c6707ce4a95
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Jun 16 12:47:32 2021 +0100

    libstdc++: Use named struct for __decay_copy
    
    In r12-1486-gcb326a6442f09cb36b05ce556fc91e10bfeb0cf6 I changed
    __decay_copy to be a function object of unnamed class type. This causes
    problems when importing the library headers:
    
    error: conflicting global module declaration 'constexpr const std::ranges::__cust_access::<unnamed struct> std::ranges::__cust_access::__decay_copy'
    
    The fix is to use a named struct instead of an anonymous one.
    
    Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/iterator_concepts.h (__decay_copy): Name type.

Diff:
---
 libstdc++-v3/include/bits/iterator_concepts.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/iterator_concepts.h b/libstdc++-v3/include/bits/iterator_concepts.h
index d18ae32bf20..11748e5ed7b 100644
--- a/libstdc++-v3/include/bits/iterator_concepts.h
+++ b/libstdc++-v3/include/bits/iterator_concepts.h
@@ -930,7 +930,8 @@ namespace ranges
   {
     using std::__detail::__class_or_enum;
 
-    struct {
+    struct _Decay_copy final
+    {
       template<typename _Tp>
 	constexpr decay_t<_Tp>
 	operator()(_Tp&& __t) const


More information about the Libstdc++-cvs mailing list