No functionality change at this time.  I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS.  This is in preparation for taking advantage of clang's new __type_visibility__ attribute.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@176593 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/future b/include/future
index fa605e7..3d7bb6c 100644
--- a/include/future
+++ b/include/future
@@ -387,11 +387,11 @@
 _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(future_errc)
 
 template <>
-struct _LIBCPP_VISIBLE is_error_code_enum<future_errc> : public true_type {};
+struct _LIBCPP_TYPE_VIS is_error_code_enum<future_errc> : public true_type {};
 
 #ifdef _LIBCPP_HAS_NO_STRONG_ENUMS
 template <>
-struct _LIBCPP_VISIBLE is_error_code_enum<future_errc::__lx> : public true_type { };
+struct _LIBCPP_TYPE_VIS is_error_code_enum<future_errc::__lx> : public true_type { };
 #endif
 
 //enum class launch
@@ -412,7 +412,7 @@
 };
 _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(future_status)
 
-_LIBCPP_VISIBLE
+_LIBCPP_FUNC_VIS
 const error_category& future_category() _NOEXCEPT;
 
 inline _LIBCPP_INLINE_VISIBILITY
@@ -966,12 +966,12 @@
     base::__on_zero_shared();
 }
 
-template <class _Rp> class _LIBCPP_VISIBLE promise;
-template <class _Rp> class _LIBCPP_VISIBLE shared_future;
+template <class _Rp> class _LIBCPP_TYPE_VIS promise;
+template <class _Rp> class _LIBCPP_TYPE_VIS shared_future;
 
 // future
 
-template <class _Rp> class _LIBCPP_VISIBLE future;
+template <class _Rp> class _LIBCPP_TYPE_VIS future;
 
 template <class _Rp, class _Fp>
 future<_Rp>
@@ -990,7 +990,7 @@
 #endif
 
 template <class _Rp>
-class _LIBCPP_VISIBLE future
+class _LIBCPP_TYPE_VIS future
 {
     __assoc_state<_Rp>* __state_;
 
@@ -1094,7 +1094,7 @@
 }
 
 template <class _Rp>
-class _LIBCPP_VISIBLE future<_Rp&>
+class _LIBCPP_TYPE_VIS future<_Rp&>
 {
     __assoc_state<_Rp&>* __state_;
 
@@ -1193,7 +1193,7 @@
 }
 
 template <>
-class _LIBCPP_VISIBLE future<void>
+class _LIBCPP_TYPE_VIS future<void>
 {
     __assoc_sub_state* __state_;
 
@@ -1275,7 +1275,7 @@
 template <class _Callable> class packaged_task;
 
 template <class _Rp>
-class _LIBCPP_VISIBLE promise
+class _LIBCPP_TYPE_VIS promise
 {
     __assoc_state<_Rp>* __state_;
 
@@ -1453,7 +1453,7 @@
 // promise<R&>
 
 template <class _Rp>
-class _LIBCPP_VISIBLE promise<_Rp&>
+class _LIBCPP_TYPE_VIS promise<_Rp&>
 {
     __assoc_state<_Rp&>* __state_;
 
@@ -1596,7 +1596,7 @@
 // promise<void>
 
 template <>
-class _LIBCPP_VISIBLE promise<void>
+class _LIBCPP_TYPE_VIS promise<void>
 {
     __assoc_sub_state* __state_;
 
@@ -1670,7 +1670,7 @@
 }
 
 template <class _Rp, class _Alloc>
-    struct _LIBCPP_VISIBLE uses_allocator<promise<_Rp>, _Alloc>
+    struct _LIBCPP_TYPE_VIS uses_allocator<promise<_Rp>, _Alloc>
         : public true_type {};
 
 #ifndef _LIBCPP_HAS_NO_VARIADICS
@@ -1934,7 +1934,7 @@
 }
 
 template<class _Rp, class ..._ArgTypes>
-class _LIBCPP_VISIBLE packaged_task<_Rp(_ArgTypes...)>
+class _LIBCPP_TYPE_VIS packaged_task<_Rp(_ArgTypes...)>
 {
 public:
     typedef _Rp result_type;
@@ -2049,7 +2049,7 @@
 }
 
 template<class ..._ArgTypes>
-class _LIBCPP_VISIBLE packaged_task<void(_ArgTypes...)>
+class _LIBCPP_TYPE_VIS packaged_task<void(_ArgTypes...)>
 {
 public:
     typedef void result_type;
@@ -2174,7 +2174,7 @@
 }
 
 template <class _Callable, class _Alloc>
-struct _LIBCPP_VISIBLE uses_allocator<packaged_task<_Callable>, _Alloc>
+struct _LIBCPP_TYPE_VIS uses_allocator<packaged_task<_Callable>, _Alloc>
     : public true_type {};
 
 template <class _Rp, class _Fp>
@@ -2263,7 +2263,7 @@
 // shared_future
 
 template <class _Rp>
-class _LIBCPP_VISIBLE shared_future
+class _LIBCPP_TYPE_VIS shared_future
 {
     __assoc_state<_Rp>* __state_;
 
@@ -2337,7 +2337,7 @@
 }
 
 template <class _Rp>
-class _LIBCPP_VISIBLE shared_future<_Rp&>
+class _LIBCPP_TYPE_VIS shared_future<_Rp&>
 {
     __assoc_state<_Rp&>* __state_;
 
@@ -2411,7 +2411,7 @@
 }
 
 template <>
-class _LIBCPP_VISIBLE shared_future<void>
+class _LIBCPP_TYPE_VIS shared_future<void>
 {
     __assoc_sub_state* __state_;