libstdc++: Use named struct for __decay_copy
authorJonathan Wakely <jwakely@redhat.com>
Wed, 16 Jun 2021 11:47:32 +0000 (12:47 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Wed, 16 Jun 2021 13:31:13 +0000 (14:31 +0100)
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.

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

index d18ae32..11748e5 100644 (file)
@@ -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