Nico Rieck:  this patch series fixes visibility issues on Windows as explained in <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html>.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188192 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/random b/include/random
index 2e7a485..7fc2167 100644
--- a/include/random
+++ b/include/random
@@ -1813,7 +1813,7 @@
 };
 
 template <class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
-class _LIBCPP_TYPE_VIS linear_congruential_engine;
+class _LIBCPP_TYPE_VIS_ONLY linear_congruential_engine;
 
 template <class _CharT, class _Traits,
           class _Up, _Up _Ap, _Up _Cp, _Up _Np>
@@ -1829,7 +1829,7 @@
            linear_congruential_engine<_Up, _Ap, _Cp, _Np>& __x);
 
 template <class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
-class _LIBCPP_TYPE_VIS linear_congruential_engine
+class _LIBCPP_TYPE_VIS_ONLY linear_congruential_engine
 {
 public:
     // types
@@ -2011,7 +2011,7 @@
 template <class _UIntType, size_t __w, size_t __n, size_t __m, size_t __r,
           _UIntType __a, size_t __u, _UIntType __d, size_t __s,
           _UIntType __b, size_t __t, _UIntType __c, size_t __l, _UIntType __f>
-class _LIBCPP_TYPE_VIS mersenne_twister_engine;
+class _LIBCPP_TYPE_VIS_ONLY mersenne_twister_engine;
 
 template <class _UI, size_t _Wp, size_t _Np, size_t _Mp, size_t _Rp,
           _UI _Ap, size_t _Up, _UI _Dp, size_t _Sp,
@@ -2053,7 +2053,7 @@
 template <class _UIntType, size_t __w, size_t __n, size_t __m, size_t __r,
           _UIntType __a, size_t __u, _UIntType __d, size_t __s,
           _UIntType __b, size_t __t, _UIntType __c, size_t __l, _UIntType __f>
-class _LIBCPP_TYPE_VIS mersenne_twister_engine
+class _LIBCPP_TYPE_VIS_ONLY mersenne_twister_engine
 {
 public:
     // types
@@ -2499,7 +2499,7 @@
 // subtract_with_carry_engine
 
 template<class _UIntType, size_t __w, size_t __s, size_t __r>
-class _LIBCPP_TYPE_VIS subtract_with_carry_engine;
+class _LIBCPP_TYPE_VIS_ONLY subtract_with_carry_engine;
 
 template<class _UI, size_t _Wp, size_t _Sp, size_t _Rp>
 bool
@@ -2527,7 +2527,7 @@
            subtract_with_carry_engine<_UI, _Wp, _Sp, _Rp>& __x);
 
 template<class _UIntType, size_t __w, size_t __s, size_t __r>
-class _LIBCPP_TYPE_VIS subtract_with_carry_engine
+class _LIBCPP_TYPE_VIS_ONLY subtract_with_carry_engine
 {
 public:
     // types
@@ -2810,7 +2810,7 @@
 // discard_block_engine
 
 template<class _Engine, size_t __p, size_t __r>
-class _LIBCPP_TYPE_VIS discard_block_engine
+class _LIBCPP_TYPE_VIS_ONLY discard_block_engine
 {
     _Engine __e_;
     int     __n_;
@@ -2983,7 +2983,7 @@
 // independent_bits_engine
 
 template<class _Engine, size_t __w, class _UIntType>
-class _LIBCPP_TYPE_VIS independent_bits_engine
+class _LIBCPP_TYPE_VIS_ONLY independent_bits_engine
 {
     template <class _UI, _UI _R0, size_t _Wp, size_t _Mp>
     class __get_n
@@ -3246,7 +3246,7 @@
 };
 
 template<class _Engine, size_t __k>
-class _LIBCPP_TYPE_VIS shuffle_order_engine
+class _LIBCPP_TYPE_VIS_ONLY shuffle_order_engine
 {
     static_assert(0 < __k, "shuffle_order_engine invalid parameters");
 public:
@@ -3507,7 +3507,7 @@
 
 // seed_seq
 
-class _LIBCPP_TYPE_VIS seed_seq
+class _LIBCPP_TYPE_VIS_ONLY seed_seq
 {
 public:
     // types
@@ -3684,13 +3684,13 @@
 // uniform_real_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS uniform_real_distribution
+class _LIBCPP_TYPE_VIS_ONLY uniform_real_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __a_;
         result_type __b_;
@@ -3805,13 +3805,13 @@
 
 // bernoulli_distribution
 
-class _LIBCPP_TYPE_VIS bernoulli_distribution
+class _LIBCPP_TYPE_VIS_ONLY bernoulli_distribution
 {
 public:
     // types
     typedef bool result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         double __p_;
     public:
@@ -3914,13 +3914,13 @@
 // binomial_distribution
 
 template<class _IntType = int>
-class _LIBCPP_TYPE_VIS binomial_distribution
+class _LIBCPP_TYPE_VIS_ONLY binomial_distribution
 {
 public:
     // types
     typedef _IntType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __t_;
         double __p_;
@@ -4079,13 +4079,13 @@
 // exponential_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS exponential_distribution
+class _LIBCPP_TYPE_VIS_ONLY exponential_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __lambda_;
     public:
@@ -4194,13 +4194,13 @@
 // normal_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS normal_distribution
+class _LIBCPP_TYPE_VIS_ONLY normal_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __mean_;
         result_type __stddev_;
@@ -4362,13 +4362,13 @@
 // lognormal_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS lognormal_distribution
+class _LIBCPP_TYPE_VIS_ONLY lognormal_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         normal_distribution<result_type> __nd_;
     public:
@@ -4487,13 +4487,13 @@
 // poisson_distribution
 
 template<class _IntType = int>
-class _LIBCPP_TYPE_VIS poisson_distribution
+class _LIBCPP_TYPE_VIS_ONLY poisson_distribution
 {
 public:
     // types
     typedef _IntType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         double __mean_;
         double __s_;
@@ -4718,13 +4718,13 @@
 // weibull_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS weibull_distribution
+class _LIBCPP_TYPE_VIS_ONLY weibull_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __a_;
         result_type __b_;
@@ -4832,13 +4832,13 @@
 }
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS extreme_value_distribution
+class _LIBCPP_TYPE_VIS_ONLY extreme_value_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __a_;
         result_type __b_;
@@ -4953,13 +4953,13 @@
 // gamma_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS gamma_distribution
+class _LIBCPP_TYPE_VIS_ONLY gamma_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __alpha_;
         result_type __beta_;
@@ -5125,13 +5125,13 @@
 // negative_binomial_distribution
 
 template<class _IntType = int>
-class _LIBCPP_TYPE_VIS negative_binomial_distribution
+class _LIBCPP_TYPE_VIS_ONLY negative_binomial_distribution
 {
 public:
     // types
     typedef _IntType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __k_;
         double __p_;
@@ -5260,13 +5260,13 @@
 // geometric_distribution
 
 template<class _IntType = int>
-class _LIBCPP_TYPE_VIS geometric_distribution
+class _LIBCPP_TYPE_VIS_ONLY geometric_distribution
 {
 public:
     // types
     typedef _IntType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         double __p_;
     public:
@@ -5362,13 +5362,13 @@
 // chi_squared_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS chi_squared_distribution
+class _LIBCPP_TYPE_VIS_ONLY chi_squared_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __n_;
     public:
@@ -5468,13 +5468,13 @@
 // cauchy_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS cauchy_distribution
+class _LIBCPP_TYPE_VIS_ONLY cauchy_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __a_;
         result_type __b_;
@@ -5591,13 +5591,13 @@
 // fisher_f_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS fisher_f_distribution
+class _LIBCPP_TYPE_VIS_ONLY fisher_f_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __m_;
         result_type __n_;
@@ -5713,13 +5713,13 @@
 // student_t_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS student_t_distribution
+class _LIBCPP_TYPE_VIS_ONLY student_t_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         result_type __n_;
     public:
@@ -5826,13 +5826,13 @@
 // discrete_distribution
 
 template<class _IntType = int>
-class _LIBCPP_TYPE_VIS discrete_distribution
+class _LIBCPP_TYPE_VIS_ONLY discrete_distribution
 {
 public:
     // types
     typedef _IntType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         vector<double> __p_;
     public:
@@ -6057,13 +6057,13 @@
 // piecewise_constant_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS piecewise_constant_distribution
+class _LIBCPP_TYPE_VIS_ONLY piecewise_constant_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         vector<result_type> __b_;
         vector<result_type> __densities_;
@@ -6381,13 +6381,13 @@
 // piecewise_linear_distribution
 
 template<class _RealType = double>
-class _LIBCPP_TYPE_VIS piecewise_linear_distribution
+class _LIBCPP_TYPE_VIS_ONLY piecewise_linear_distribution
 {
 public:
     // types
     typedef _RealType result_type;
 
-    class _LIBCPP_TYPE_VIS param_type
+    class _LIBCPP_TYPE_VIS_ONLY param_type
     {
         vector<result_type> __b_;
         vector<result_type> __densities_;