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.