| Home | Libraries | People | FAQ | More

###### segments_encoded_ref::insert (3 of 3 overloads)

Insert segments.

###### Synopsis

    template<
        class FwdIt>
    iterator
    insert(
        iterator before,
        FwdIt first,
        FwdIt last);

###### Description

This function inserts the segments in a range before the specified position. Reserved characters in the range are automatically escaped. Escapes in the range are preserved.

All iterators that are equal to `before` or come after are invalidated.

###### Remarks

None of the character buffers referenced by the range may overlap the character buffer of the underlying url, or else the behavior is undefined.

###### Mandates

    std::is_convertible< std::iterator_traits< FwdIt >::reference_type, pct_string_view >::value == true

###### Complexity

Linear in `std::distance( first, last ) + this->url().encoded_resource().size()`.

###### Exception Safety

Strong guarantee. Calls to allocate may throw. Exceptions thrown on invalid input.

###### Exceptions

Type | Thrown On
--- | ---
`system_error` | The range contains an invalid percent-encoding.

###### Return Value

An iterator to the first segment inserted, or `before` if `init.empty()`.

###### Parameters

Name | Description
--- | ---
`before` | An iterator before which the range is inserted. This may be equal to `end()`.
`first`, `last` | The range of segments to insert.