[cfe-dev] std::vector insert type requirements

Nikita Alekseev via cfe-dev cfe-dev at lists.llvm.org
Tue Jul 3 05:05:42 PDT 2018


>> Hello everyone, I hope this mailing list is the right place to ask about
>> this. When I try to compile this particular code
>> sample https://godbolt.org/g/J7cgbV <https://godbolt.org/g/J7cgbV> I get an error, that A must have a
>> copy assignment operator. However when reading the documentation
>> at https://en.cppreference.com/w/cpp/container/vector/insert <https://en.cppreference.com/w/cpp/container/vector/insert> I do not
>> see any such requirements for this particular overload of insert. It
>> does mention that T must be moveAssignable and MoveInsertable if
>> Iterator is not ForwardIterator. Even if I define move assignment
>> operator it still requires copy assignment.
>> 
>> I have tested it on Clang 4, Clang 6, GCC 8.1 and get the same error.
>> MSVC 2017 compiles when move assignment is present. It would be great if
>> someone could explain this behavior.
> 
> hi,
> please look at:
> https://en.cppreference.com/w/cpp/iterator/make_move_iterator <https://en.cppreference.com/w/cpp/iterator/make_move_iterator>
I am afraid this is not what I am trying to achieve. I want to copy vector contents via insert, but why it  requires copy assignment to be defined in order to compile? Simple construction from the pair of iterators works without it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180703/66f0279a/attachment.html>


More information about the cfe-dev mailing list