[C++0x unique_ptr] sorting a vector of unique_ptr fails

René Bürgel rbuergel@web.de
Sat Dec 13 17:35:00 GMT 2008


Hello!

Is the following code supposed to work in C++0x-Mode or am i just doing 
something wrong?

#include <memory>
#include <vector>
#include <algorithm>

int main()
{
        std::vector<std::unique_ptr<int> > v;
        std::sort(v.begin(), v.end());
}


g++-4.4.0-alpha20081107 -std=c++0x bug.cpp gives me:

In file included from 
/usr/lib/gcc/i686-pc-linux-gnu/4.4.0-alpha20081107/include/g++-v4/algorithm:67,
                 from 
../../bug.cpp:3:                                                               

/usr/lib/gcc/i686-pc-linux-gnu/4.4.0-alpha20081107/include/g++-v4/bits/unique_ptr.h: 
In function 'void std::__introsort_loop(_RandomAccessIterator, 
_RandomAccessIterator, _Size) [with _RandomAccessIterator = 
__gnu_cxx::__normal_iterator<std::unique_ptr<int, 
std::default_delete<int> >*, std::vector<std::unique_ptr<int, 
std::default_delete<int> >, std::allocator<std::unique_ptr<int, 
std::default_delete<int> > > > >, _Size = 
int]':                                                                   
/usr/lib/gcc/i686-pc-linux-gnu/4.4.0-alpha20081107/include/g++-v4/bits/stl_algo.h:5152:   
instantiated from 'void std::sort(_RAIter, _RAIter) [with _RAIter = 
__gnu_cxx::__normal_iterator<std::unique_ptr<int, 
std::default_delete<int> >*, std::vector<std::unique_ptr<int, 
std::default_delete<int> >, std::allocator<std::unique_ptr<int, 
std::default_delete<int> > > > >]'      
../../bug.cpp:10:   instantiated from 
here                                                                                   

/usr/lib/gcc/i686-pc-linux-gnu/4.4.0-alpha20081107/include/g++-v4/bits/unique_ptr.h:215: 
error: deleted function 'std::unique_ptr<_Tp, 
_Tp_Deleter>::unique_ptr(const std::unique_ptr<_Tp, _Tp_Deleter>&) [with 
_Tp = int, _Tp_Deleter = 
std::default_delete<int>]'                                                                                                                    

/usr/lib/gcc/i686-pc-linux-gnu/4.4.0-alpha20081107/include/g++-v4/bits/stl_algo.h:2249: 
error: used here
[...]


Thanks in advance
René



More information about the Gcc-help mailing list