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; ^