I am experimenting with putting visibility-default attributes on all struct/classes in libc++.  This checkin decorates only basic_string and vector as an experiment, and for review by those in this audience that might know more about visibilty than I do.  If I get no negative feedback on this procedure I will begin to decorate the entire library in this way.

llvm-svn: 113590
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: f9cca3b7d0a5bfbc4388d18799a8c4423e352856
diff --git a/include/iosfwd b/include/iosfwd
index a4d3f38..f9ca1a6 100644
--- a/include/iosfwd
+++ b/include/iosfwd
@@ -92,8 +92,8 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-template<class _CharT>  struct char_traits;
-template<class _Tp>     class allocator;
+template<class _CharT>  struct _LIBCPP_VISIBLE char_traits;
+template<class _Tp>     class _LIBCPP_VISIBLE allocator;
 
 template <class _CharT, class _Traits = char_traits<_CharT> > class basic_ios;
 
@@ -164,7 +164,7 @@
 
 template <class _CharT,             // for <stdexcept>
           class _Traits = char_traits<_CharT>,
-          class _Allocator = allocator<_CharT> > class basic_string;
+          class _Allocator = allocator<_CharT> > class _LIBCPP_VISIBLE basic_string;
 typedef basic_string<char, char_traits<char>, allocator<char> > string;
 typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;