If I want to shrink the capacity of a vector, a binding way, also the old way to do it is : 

```
std::vector<T>(v).swap(v);

```

Why? Why capacity is not also simply copied as well? Is it **guaranteed** in standard that copy initialization will construct a vector with the capacity that is lesser than the vector being copied? I tend to think it is just implementation specified. 

(In standard, vector's specialization of `swap` will swap the element and capacity and that's **guaranteed**. But I can't find any guarantee about capacity for copy initialization. Please cite the standard if possible, Thank!)

Link to similar question : [What is the value of the capacity of std::vector when the copy constructor is used?](https://groups.google.com/a/isocpp.org/forum/#!topic/std-discussion/FbZwa0aViPc)