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.