https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112838

--- Comment #7 from Ahmad Nour <eng.ahmad.nour at gmail dot com> ---
(In reply to Andrew Pinski from comment #3)
> (In reply to Ahmad Nour from comment #2)
> > 
> > Thanks for confirmation.
> > I tried with clang-12 -Wall -Wextra main.cpp, but I didn't get that
> > hint/note. Am I missing something?
> 
> Oh I tried with -std=c++20 which provided that note.  Sorry about that. But
> it might be the case that adding this for -std=c++17 might be hard ...

Hmmmmm this is what I'm getting with c++20. I can't find that note where it
points to line #13

>> clang-12 -Wall -Wextra main.cpp -std=c++20
In file included from main.cpp:1:
In file included from
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/vector:66:
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_uninitialized.h:137:7:
error: static_assert failed due to requirement
'is_constructible<std::unique_ptr<int, std::default_delete<int>>, const
std::unique_ptr<int, std::default_delete<int>> &>::value' "result type must be
constructible from value type of input range"
      static_assert(is_constructible<_ValueType2, decltype(*__first)>::value,
      ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_uninitialized.h:325:19:
note: in instantiation of function template specialization
'std::uninitialized_copy<__gnu_cxx::__normal_iterator<const
std::unique_ptr<int> *, std::vector<std::unique_ptr<int>>>,
std::unique_ptr<int> *>' requested here
    { return std::uninitialized_copy(__first, __last, __result); }
                  ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_vector.h:558:9:
note: in instantiation of function template specialization
'std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<const
std::unique_ptr<int> *, std::vector<std::unique_ptr<int>>>,
std::unique_ptr<int> *, std::unique_ptr<int>>' requested here
          std::__uninitialized_copy_a(__x.begin(), __x.end(),
               ^
main.cpp:4:7: note: in instantiation of member function
'std::vector<std::unique_ptr<int>>::vector' requested here
class NonCopyable
      ^
In file included from main.cpp:1:
In file included from
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/vector:62:
In file included from
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_algo.h:62:
In file included from
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_tempbuf.h:60:
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_construct.h:109:38:
error: call to deleted constructor of 'std::unique_ptr<int>'
    { ::new(static_cast<void*>(__p)) _Tp(std::forward<_Args>(__args)...); }
                                     ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_uninitialized.h:91:8:
note: in instantiation of function template specialization
'std::_Construct<std::unique_ptr<int>, const std::unique_ptr<int> &>' requested
here
                std::_Construct(std::__addressof(*__cur), *__first);
                     ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_uninitialized.h:150:2:
note: in instantiation of function template specialization
'std::__uninitialized_copy<false>::__uninit_copy<__gnu_cxx::__normal_iterator<const
std::unique_ptr<int> *, std::vector<std::unique_ptr<int>>>,
std::unique_ptr<int> *>' requested here
        __uninit_copy(__first, __last, __result);
        ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_uninitialized.h:325:19:
note: in instantiation of function template specialization
'std::uninitialized_copy<__gnu_cxx::__normal_iterator<const
std::unique_ptr<int> *, std::vector<std::unique_ptr<int>>>,
std::unique_ptr<int> *>' requested here
    { return std::uninitialized_copy(__first, __last, __result); }
                  ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_vector.h:558:9:
note: in instantiation of function template specialization
'std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<const
std::unique_ptr<int> *, std::vector<std::unique_ptr<int>>>,
std::unique_ptr<int> *, std::unique_ptr<int>>' requested here
          std::__uninitialized_copy_a(__x.begin(), __x.end(),
               ^
main.cpp:4:7: note: in instantiation of member function
'std::vector<std::unique_ptr<int>>::vector' requested here
class NonCopyable
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/unique_ptr.h:468:7:
note: 'unique_ptr' has been explicitly marked deleted here
      unique_ptr(const unique_ptr&) = delete;
      ^
2 errors generated.

Reply via email to