If I e.g. have a vector v, is it ok by the standard to call:

```
void setData(const uint8_t* p, size_t s) {
    v.assign(p, p+s);
}

setData(nullptr, 0);

```

In general is it always ok to call STL functions `XXX(InputIterator first, InputIterator last)`as above when `distance(first,last) == 0`?