This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ 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]

Re: [patch] std::unique_ptr<T[], D> improvements


On 28 December 2012 01:51, Lawrence Crowl wrote:
>
> I'm not getting errors when converting from derived to base.
> E.g. the following compiles, when it should not.
>
> std::unique_ptr<const base []> acb_ad(new derived[3]);

I get an error:

shm$ cat up.cc
#include <memory>
struct base { };
struct derived : base { virtual ~derived() = default; };
std::unique_ptr<const base []> acb_ad(new derived[3]);
shm$
shm$ g++11 up.cc -c
up.cc:4:53: error: use of deleted function ‘std::unique_ptr<_Tp [],
_Dp>::unique_ptr(_Up*) [with _Up = derived; <template-parameter-2-2> =
void; _Tp = const base; _Dp = std::default_delete<const base []>]’
 std::unique_ptr<const base []> acb_ad(new derived[3]);
                                                     ^
In file included from /home/redi/gcc/4.x/include/c++/4.8.0/memory:81:0,
                 from up.cc:1:
/home/redi/gcc/4.x/include/c++/4.8.0/bits/unique_ptr.h:343:2: error:
declared here
  unique_ptr(_Up* __p) = delete;
  ^


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