std::vector insert type requirements

Actually I already found the issue and it really seems like a bug. Standard does not require type to be copy assignable, but internally both clang and gcc use std::copy, which is more efficient, than for example initialized move, however this places additional requirement of being copy assignable on an underlying type.

Maybe create overload for only move assignable type? We can still fallback to current implementation if copy assignment is implemented.

Yeah, looks like a bug in libstdc++ (the GNU C++ standard library implementation) - Clang will use that if that’s what it finds.