I mean something like this:
std::vector<T> v(0);
Everything is good? In the Standard, I don't see a requirement like this.
This is clearly defined. The standard places no restrictions on the value n passed to this constructor. 0 - a valid value of the type size_type (whatever is).
n
0
size_type