Take the following code:
std::vector a;
a.reserve(65536);
std::vector b(a); //NOTE: b is constructed from a
a.reserve(65536); // no r
Standard says nothing about preserving capacity when you call copy constructor. So you have no any guarantees about it.
But you can do the following trick, which swap a's and b's state, if you need preserving capacity in the copy only:
std::vector a;
a.reserve(65536);
std::vector b(a);
b.swap(a); // now b has a's state
assert(b.capacity() == 65536);