Instead of carrying around #ifdefs to determine whether those functions
are available on the platform, use the using_if_exists attribute (with
Clang) to import it into namespace std only when available. That was the
purpose of this attribute from the start.
This change means that trying to use libc++ with an old SDK (or on an
old platform for platforms that ship system headers in /usr/include)
will require a recent Clang that supports the using_if_exists attribute.
When using an older Clang or GCC, the underlying platform has to support
a C11 standard library.
The motivation for this change is that our logic for determining whether
those functions are provided was wrong in at least some cases (some Apple
platforms). Instead of fixing that logic, the goal has always been to
remove it entirely in favour of the using_if_exists attribute, so that's
what this patch does.