根据cppreference,C++11 应该支持:
template< class InputIt >
iterator insert( const_iterator pos, InputIt first, InputIt last );
但是当我尝试使用 g++ 4.9.2 编译以下代码时:
std::string str{ "hello world" }, addition{ "h my" };
auto iter = str.erase(str.begin(), str.begin() + 4);
iter = str.insert(next(iter), addition.begin(), addition.end()); // Error
我收到以下错误(现场示例):
error: no match for 'operator=' (operand types are '__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >' and 'void')
iter = str.insert(next(iter), addition.begin(), addition.end());
^
但是,Visual Studio 2013 和 Clang 似乎没有问题。