This is one part of many of a locale refactor. See http://reviews.llvm.org/D17146 for an idea of where this is going.
Instead of checking _LIBCPP_LOCALE_L_EXTENSIONS all over, instead check it once, and define the various *_l symbols once. The private redirector symbol names are all prefixed with _libcpp_* so that they won't conflict with user symbols, and so they won't conflict with future C library symbols. In particular, glibc likes providing private symbols such as __locale_t, so we should follow a different naming pattern (like _libcpp_*) to avoid problems on that front.
Tested on Linux with glibc. Hoping for the best on OSX and the various BSDs.