I used a lot of git grep to find places where std:: was being used outside of comments and assert-messages. There were three outcomes:
- Qualified function calls, e.g. std::move becomes _VSTD::move. This is the most common case.
- Typenames that don't need qualification, e.g. std::allocator becomes allocator. Leaving these as _VSTD::allocator would also be fine, but I decided that removing the qualification is more consistent with existing practice.
- Names that specifically need un-versioned std:: qualification, or that I wasn't sure about. For example, I didn't touch any code in <atomic>, <math.h>, <new>, or any ext/ or experimental/ headers; and I didn't touch any instances of std::type_info.
In some deduction guides, we were accidentally using class Alloc = typename std::allocator<T>, despite std::allocator<T>'s type-ness not being template-dependent. Because std::allocator is a qualified name, this did parse as we intended; but what we meant was simply class Alloc = allocator<T>.
This one may not be correct.
If a user has implemented an overload for std::swap for T1 or T2, then it's not clear to me that this wil find it.