Based on this comment from D103753.
We don't pretend to implement a "C++03 library"; no libc++ user should ever be relying on the fact that e.g. `emplace_back` does NOT exist. We support GCC only with `-std=c++11` and later. We support Clang in `-std=c++03` mode, but Clang supports rvalue references, defaulted member functions, NSDMIs, and variadic templates all as extensions to C++03. Conclusion: Several instances of _LIBCPP_CXX03_LANG are unnecessary. However, it's still true that in `-std=c++03` mode we're not allowed to use - `std::initializer_list` - braces around member-initializers - the `constexpr` or `noexcept` keywords And I don't think we want to turn on user-visible move constructors; e.g. today in `-std=c++03` mode, std::vector<T> v(1); auto w = std::move(v); visibly calls T's copy ctor. I think it would be reckless to change that, at least in this particular patch.