Quick Question: What's the difference between writing `_VSTD::` and `std::`? Nothing.
OK... technically `_VSTD::` expands to `std::__version` (where `__version` is the current ABI namespace). But this makes no functional difference. This lack of functional difference makes `_VSTD::` confusing, and makes it unclear when it should be used.
Readers may ask why are some calls in libc++ using `std::` while others are using `_VSTD::`. And contributors are often confused about when `_VSTD` is needed, resulting in surperflous usages (which further cause confusion).
The effect of `std::`, however, is perfectly clear to all readers of C++.
This patch replaces existing usages of `_VSTD` with `std`.
So if `std::` is simpler and clearer, why do we have `_VSTD` to begin with? The macro has been present since the beginning, while libc++'s ABI versioning scheme was still being designed. It was envisioned to support cases where two versioning namespaces were present at the same time. But this is never the case, and it's now clear that the theoretical version mixing would never work, even with `_VSTD`. In summary `_VSTD` was preemptively introduced as a solution without a problem.