This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/55123] [C++11] Construction of shared_ptr<const T> from unique_ptr<const T> fails


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55123

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-10-29 18:23:58 UTC ---
Actually the fix is trivial, we never need allocator<_Tp> , so can just ensure
we never instantiate allocator<_Tp>, then it doesn't matter if _Tp is const.


--- bits/shared_ptr_base.h.orig 2012-10-29 18:22:44.904507722 +0000
+++ bits/shared_ptr_base.h      2012-10-29 18:22:46.654191961 +0000
@@ -622,7 +622,7 @@
        _S_create_from_up(std::unique_ptr<_Tp, _Del>&& __r,
          typename std::enable_if<!std::is_reference<_Del>::value>::type* = 0)
        {
-         return new _Sp_counted_deleter<_Tp*, _Del, std::allocator<_Tp>,
+         return new _Sp_counted_deleter<_Tp*, _Del, std::allocator<void>,
            _Lp>(__r.get(), __r.get_deleter());
        }

@@ -633,7 +633,7 @@
        {
          typedef typename std::remove_reference<_Del>::type _Del1;
          typedef std::reference_wrapper<_Del1> _Del2;
-         return new _Sp_counted_deleter<_Tp*, _Del2, std::allocator<_Tp>,
+         return new _Sp_counted_deleter<_Tp*, _Del2, std::allocator<void>,
            _Lp>(__r.get(), std::ref(__r.get_deleter()));
        }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]