D25208 switches _LIBCPP_TYPE_VIS to expand to default visibility
instead of default type visibility, in order to ease building libc++
with hidden visibility. With that change made, any template methods of a
class marked _LIBCPP_TYPE_VIS will also get default visibility when
implicitly instantiated, which is not desirable for clients of libc++
headers who wish to control their visibility; a similar issue led to
PR30642. Annotate all problematic methods with an explicit visibility
specifier in order to avoid this issue.
The problematic methods were found by applying D25208 and then running
https://github.com/smeenai/bad-visibility-finder. The small methods were
marked for inlining; the larger ones marked hidden.
We really should hide this using inline _LIBCPP_INLINE_VISIBILITY because it's a special C++03 symbol, so we don't even want a hidden definition omitted ideally.