diff --git a/libcxx/CREDITS.TXT b/libcxx/CREDITS.TXT index 5e4d14ec20a4..5eea7285f186 100644 --- a/libcxx/CREDITS.TXT +++ b/libcxx/CREDITS.TXT @@ -76,6 +76,10 @@ N: Bjorn Reese E: breese@users.sourceforge.net D: Initial regex prototype +N: Nico Rieck +E: nico.rieck@gmail.com +D: Windows fixes + N: Jonathan Sauer D: Minor patches, mostly related to constexpr diff --git a/libcxx/include/__config b/libcxx/include/__config index b1f0d9586ec4..5f68e46af86a 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -132,6 +132,9 @@ # define _LIBCPP_TYPE_VIS #endif +#define _LIBCPP_TYPE_VIS_ONLY +#define _LIBCPP_FUNC_VIS_ONLY + #ifndef _LIBCPP_INLINE_VISIBILITY # ifdef _LIBCPP_MSVC # define _LIBCPP_INLINE_VISIBILITY __forceinline @@ -172,6 +175,14 @@ # endif #endif +#ifndef _LIBCPP_TYPE_VIS_ONLY +# define _LIBCPP_TYPE_VIS_ONLY _LIBCPP_TYPE_VIS +#endif + +#ifndef _LIBCPP_FUNC_VIS_ONLY +# define _LIBCPP_FUNC_VIS_ONLY _LIBCPP_FUNC_VIS +#endif + #ifndef _LIBCPP_INLINE_VISIBILITY #define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__)) #endif diff --git a/libcxx/include/__functional_03 b/libcxx/include/__functional_03 index 662928d83b3b..f9a3d9766255 100644 --- a/libcxx/include/__functional_03 +++ b/libcxx/include/__functional_03 @@ -203,7 +203,7 @@ class _LIBCPP_EXCEPTION_ABI bad_function_call { }; -template class _LIBCPP_TYPE_VIS function; // undefined +template class _LIBCPP_TYPE_VIS_ONLY function; // undefined namespace __function { @@ -644,7 +644,7 @@ __func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::target_type() const } // __function template -class _LIBCPP_TYPE_VIS function<_Rp()> +class _LIBCPP_TYPE_VIS_ONLY function<_Rp()> { typedef __function::__base<_Rp()> __base; aligned_storage<3*sizeof(void*)>::type __buf_; @@ -928,7 +928,7 @@ function<_Rp()>::target() const #endif // _LIBCPP_NO_RTTI template -class _LIBCPP_TYPE_VIS function<_Rp(_A0)> +class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_A0)> : public unary_function<_A0, _Rp> { typedef __function::__base<_Rp(_A0)> __base; @@ -1230,7 +1230,7 @@ function<_Rp(_A0)>::target() const #endif // _LIBCPP_NO_RTTI template -class _LIBCPP_TYPE_VIS function<_Rp(_A0, _A1)> +class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_A0, _A1)> : public binary_function<_A0, _A1, _Rp> { typedef __function::__base<_Rp(_A0, _A1)> __base; @@ -1532,7 +1532,7 @@ function<_Rp(_A0, _A1)>::target() const #endif // _LIBCPP_NO_RTTI template -class _LIBCPP_TYPE_VIS function<_Rp(_A0, _A1, _A2)> +class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_A0, _A1, _A2)> { typedef __function::__base<_Rp(_A0, _A1, _A2)> __base; aligned_storage<3*sizeof(void*)>::type __buf_; @@ -1860,11 +1860,11 @@ swap(function<_Fp>& __x, function<_Fp>& __y) {return __x.swap(__y);} template struct __is_bind_expression : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_bind_expression +template struct _LIBCPP_TYPE_VIS_ONLY is_bind_expression : public __is_bind_expression::type> {}; template struct __is_placeholder : public integral_constant {}; -template struct _LIBCPP_TYPE_VIS is_placeholder +template struct _LIBCPP_TYPE_VIS_ONLY is_placeholder : public __is_placeholder::type> {}; namespace placeholders diff --git a/libcxx/include/__functional_base b/libcxx/include/__functional_base index 8122a4e8bedf..8ecc35b75da7 100644 --- a/libcxx/include/__functional_base +++ b/libcxx/include/__functional_base @@ -23,21 +23,21 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -struct _LIBCPP_TYPE_VIS unary_function +struct _LIBCPP_TYPE_VIS_ONLY unary_function { typedef _Arg argument_type; typedef _Result result_type; }; template -struct _LIBCPP_TYPE_VIS binary_function +struct _LIBCPP_TYPE_VIS_ONLY binary_function { typedef _Arg1 first_argument_type; typedef _Arg2 second_argument_type; typedef _Result result_type; }; -template struct _LIBCPP_TYPE_VIS hash; +template struct _LIBCPP_TYPE_VIS_ONLY hash; template struct __has_result_type @@ -55,7 +55,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS less : binary_function<_Tp, _Tp, bool> +struct _LIBCPP_TYPE_VIS_ONLY less : binary_function<_Tp, _Tp, bool> { _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const {return __x < __y;} @@ -63,7 +63,7 @@ struct _LIBCPP_TYPE_VIS less : binary_function<_Tp, _Tp, bool> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS less +struct _LIBCPP_TYPE_VIS_ONLY less { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -416,7 +416,7 @@ struct __invoke_return }; template -class _LIBCPP_TYPE_VIS reference_wrapper +class _LIBCPP_TYPE_VIS_ONLY reference_wrapper : public __weak_result_type<_Tp> { public: diff --git a/libcxx/include/__functional_base_03 b/libcxx/include/__functional_base_03 index 11165a964d18..296dd8db3072 100644 --- a/libcxx/include/__functional_base_03 +++ b/libcxx/include/__functional_base_03 @@ -996,7 +996,7 @@ struct __invoke_return2 }; template -class _LIBCPP_TYPE_VIS reference_wrapper +class _LIBCPP_TYPE_VIS_ONLY reference_wrapper : public __weak_result_type<_Tp> { public: diff --git a/libcxx/include/__hash_table b/libcxx/include/__hash_table index 6157fcd99fc7..880ef967e17e 100644 --- a/libcxx/include/__hash_table +++ b/libcxx/include/__hash_table @@ -85,14 +85,14 @@ __next_pow2(size_t __n) } template class __hash_table; -template class _LIBCPP_TYPE_VIS __hash_const_iterator; -template class _LIBCPP_TYPE_VIS __hash_map_iterator; -template class _LIBCPP_TYPE_VIS __hash_map_const_iterator; +template class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; +template class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator; +template class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; template - class _LIBCPP_TYPE_VIS unordered_map; + class _LIBCPP_TYPE_VIS_ONLY unordered_map; template -class _LIBCPP_TYPE_VIS __hash_iterator +class _LIBCPP_TYPE_VIS_ONLY __hash_iterator { typedef _NodePtr __node_pointer; @@ -212,14 +212,14 @@ private: #endif template friend class __hash_table; - template friend class _LIBCPP_TYPE_VIS __hash_const_iterator; - template friend class _LIBCPP_TYPE_VIS __hash_map_iterator; - template friend class _LIBCPP_TYPE_VIS unordered_map; - template friend class _LIBCPP_TYPE_VIS unordered_multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; + template friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; }; template -class _LIBCPP_TYPE_VIS __hash_const_iterator +class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator { typedef _ConstNodePtr __node_pointer; @@ -359,15 +359,15 @@ private: #endif template friend class __hash_table; - template friend class _LIBCPP_TYPE_VIS __hash_map_const_iterator; - template friend class _LIBCPP_TYPE_VIS unordered_map; - template friend class _LIBCPP_TYPE_VIS unordered_multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; + template friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; }; -template class _LIBCPP_TYPE_VIS __hash_const_local_iterator; +template class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; template -class _LIBCPP_TYPE_VIS __hash_local_iterator +class _LIBCPP_TYPE_VIS_ONLY __hash_local_iterator { typedef _NodePtr __node_pointer; @@ -503,12 +503,12 @@ private: } #endif template friend class __hash_table; - template friend class _LIBCPP_TYPE_VIS __hash_const_local_iterator; - template friend class _LIBCPP_TYPE_VIS __hash_map_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator; }; template -class _LIBCPP_TYPE_VIS __hash_const_local_iterator +class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator { typedef _ConstNodePtr __node_pointer; @@ -668,7 +668,7 @@ private: } #endif template friend class __hash_table; - template friend class _LIBCPP_TYPE_VIS __hash_map_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; }; template @@ -1160,8 +1160,8 @@ private: void __deallocate(__node_pointer __np) _NOEXCEPT; __node_pointer __detach() _NOEXCEPT; - template friend class _LIBCPP_TYPE_VIS unordered_map; - template friend class _LIBCPP_TYPE_VIS unordered_multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; + template friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; }; template diff --git a/libcxx/include/__locale b/libcxx/include/__locale index 93147ec00ac9..8b0ae336ef9d 100644 --- a/libcxx/include/__locale +++ b/libcxx/include/__locale @@ -175,7 +175,7 @@ use_facet(const locale& __l) // template class collate; template -class _LIBCPP_TYPE_VIS collate +class _LIBCPP_TYPE_VIS_ONLY collate : public locale::facet { public: @@ -259,7 +259,7 @@ _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS collate) // template class collate_byname; -template class _LIBCPP_TYPE_VIS collate_byname; +template class _LIBCPP_TYPE_VIS_ONLY collate_byname; template <> class _LIBCPP_TYPE_VIS collate_byname @@ -392,7 +392,7 @@ public: _LIBCPP_ALWAYS_INLINE ctype_base() {} }; -template class _LIBCPP_TYPE_VIS ctype; +template class _LIBCPP_TYPE_VIS_ONLY ctype; template <> class _LIBCPP_TYPE_VIS ctype @@ -619,7 +619,7 @@ protected: // template class ctype_byname; -template class _LIBCPP_TYPE_VIS ctype_byname; +template class _LIBCPP_TYPE_VIS_ONLY ctype_byname; template <> class _LIBCPP_TYPE_VIS ctype_byname @@ -780,7 +780,7 @@ public: // template class codecvt; -template class _LIBCPP_TYPE_VIS codecvt; +template class _LIBCPP_TYPE_VIS_ONLY codecvt; // template <> class codecvt @@ -1126,7 +1126,7 @@ protected: // template class codecvt_byname template -class _LIBCPP_TYPE_VIS codecvt_byname +class _LIBCPP_TYPE_VIS_ONLY codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> { public: @@ -1145,10 +1145,10 @@ codecvt_byname<_InternT, _ExternT, _StateT>::~codecvt_byname() { } -_LIBCPP_EXTERN_TEMPLATE(class codecvt_byname) -_LIBCPP_EXTERN_TEMPLATE(class codecvt_byname) -_LIBCPP_EXTERN_TEMPLATE(class codecvt_byname) -_LIBCPP_EXTERN_TEMPLATE(class codecvt_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS codecvt_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS codecvt_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS codecvt_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS codecvt_byname) _LIBCPP_FUNC_VIS void __throw_runtime_error(const char*); @@ -1334,7 +1334,7 @@ struct __widen_from_utf8<32> // template class numpunct -template class _LIBCPP_TYPE_VIS numpunct; +template class _LIBCPP_TYPE_VIS_ONLY numpunct; template <> class _LIBCPP_TYPE_VIS numpunct @@ -1400,7 +1400,7 @@ protected: // template class numpunct_byname -template class _LIBCPP_TYPE_VIS numpunct_byname; +template class _LIBCPP_TYPE_VIS_ONLY numpunct_byname; template <> class _LIBCPP_TYPE_VIS numpunct_byname diff --git a/libcxx/include/__mutex_base b/libcxx/include/__mutex_base index 0583df933a06..a73e400e655f 100644 --- a/libcxx/include/__mutex_base +++ b/libcxx/include/__mutex_base @@ -77,7 +77,7 @@ constexpr adopt_lock_t adopt_lock = adopt_lock_t(); #endif template -class _LIBCPP_TYPE_VIS lock_guard +class _LIBCPP_TYPE_VIS_ONLY lock_guard { public: typedef _Mutex mutex_type; @@ -101,7 +101,7 @@ private: }; template -class _LIBCPP_TYPE_VIS unique_lock +class _LIBCPP_TYPE_VIS_ONLY unique_lock { public: typedef _Mutex mutex_type; diff --git a/libcxx/include/__tree b/libcxx/include/__tree index d8f6cb7de232..67f0a2b6c1bb 100644 --- a/libcxx/include/__tree +++ b/libcxx/include/__tree @@ -25,17 +25,17 @@ _LIBCPP_BEGIN_NAMESPACE_STD template class __tree; template - class _LIBCPP_TYPE_VIS __tree_iterator; + class _LIBCPP_TYPE_VIS_ONLY __tree_iterator; template - class _LIBCPP_TYPE_VIS __tree_const_iterator; + class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator; template - class _LIBCPP_TYPE_VIS map; + class _LIBCPP_TYPE_VIS_ONLY map; template - class _LIBCPP_TYPE_VIS multimap; + class _LIBCPP_TYPE_VIS_ONLY multimap; template - class _LIBCPP_TYPE_VIS set; + class _LIBCPP_TYPE_VIS_ONLY set; template - class _LIBCPP_TYPE_VIS multiset; + class _LIBCPP_TYPE_VIS_ONLY multiset; /* @@ -614,11 +614,11 @@ public: #endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) }; -template class _LIBCPP_TYPE_VIS __map_iterator; -template class _LIBCPP_TYPE_VIS __map_const_iterator; +template class _LIBCPP_TYPE_VIS_ONLY __map_iterator; +template class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator; template -class _LIBCPP_TYPE_VIS __tree_iterator +class _LIBCPP_TYPE_VIS_ONLY __tree_iterator { typedef _NodePtr __node_pointer; typedef typename pointer_traits<__node_pointer>::element_type __node; @@ -678,16 +678,16 @@ private: _LIBCPP_INLINE_VISIBILITY explicit __tree_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {} template friend class __tree; - template friend class _LIBCPP_TYPE_VIS __tree_const_iterator; - template friend class _LIBCPP_TYPE_VIS __map_iterator; - template friend class _LIBCPP_TYPE_VIS map; - template friend class _LIBCPP_TYPE_VIS multimap; - template friend class _LIBCPP_TYPE_VIS set; - template friend class _LIBCPP_TYPE_VIS multiset; + template friend class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __map_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY map; + template friend class _LIBCPP_TYPE_VIS_ONLY multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY set; + template friend class _LIBCPP_TYPE_VIS_ONLY multiset; }; template -class _LIBCPP_TYPE_VIS __tree_const_iterator +class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator { typedef _ConstNodePtr __node_pointer; typedef typename pointer_traits<__node_pointer>::element_type __node; @@ -770,11 +770,11 @@ private: explicit __tree_const_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {} template friend class __tree; - template friend class _LIBCPP_TYPE_VIS map; - template friend class _LIBCPP_TYPE_VIS multimap; - template friend class _LIBCPP_TYPE_VIS set; - template friend class _LIBCPP_TYPE_VIS multiset; - template friend class _LIBCPP_TYPE_VIS __map_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY map; + template friend class _LIBCPP_TYPE_VIS_ONLY multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY set; + template friend class _LIBCPP_TYPE_VIS_ONLY multiset; + template friend class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator; }; template @@ -1116,8 +1116,8 @@ private: __node_pointer __detach(); static __node_pointer __detach(__node_pointer); - template friend class _LIBCPP_TYPE_VIS map; - template friend class _LIBCPP_TYPE_VIS multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY map; + template friend class _LIBCPP_TYPE_VIS_ONLY multimap; }; template diff --git a/libcxx/include/__tuple b/libcxx/include/__tuple index 9a6b6e09fb1e..de35cb87e8de 100644 --- a/libcxx/include/__tuple +++ b/libcxx/include/__tuple @@ -27,46 +27,46 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template class _LIBCPP_TYPE_VIS tuple_size; +template class _LIBCPP_TYPE_VIS_ONLY tuple_size; template -class _LIBCPP_TYPE_VIS tuple_size +class _LIBCPP_TYPE_VIS_ONLY tuple_size : public tuple_size<_Tp> {}; template -class _LIBCPP_TYPE_VIS tuple_size +class _LIBCPP_TYPE_VIS_ONLY tuple_size : public tuple_size<_Tp> {}; template -class _LIBCPP_TYPE_VIS tuple_size +class _LIBCPP_TYPE_VIS_ONLY tuple_size : public tuple_size<_Tp> {}; -template class _LIBCPP_TYPE_VIS tuple_element; +template class _LIBCPP_TYPE_VIS_ONLY tuple_element; template -class _LIBCPP_TYPE_VIS tuple_element<_Ip, const _Tp> +class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const _Tp> { public: typedef typename add_const::type>::type type; }; template -class _LIBCPP_TYPE_VIS tuple_element<_Ip, volatile _Tp> +class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, volatile _Tp> { public: typedef typename add_volatile::type>::type type; }; template -class _LIBCPP_TYPE_VIS tuple_element<_Ip, const volatile _Tp> +class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const volatile _Tp> { public: typedef typename add_cv::type>::type type; }; -template class _LIBCPP_TYPE_VIS tuple; -template struct _LIBCPP_TYPE_VIS pair; -template struct _LIBCPP_TYPE_VIS array; +template class _LIBCPP_TYPE_VIS_ONLY tuple; +template struct _LIBCPP_TYPE_VIS_ONLY pair; +template struct _LIBCPP_TYPE_VIS_ONLY array; template struct __tuple_like : false_type {}; @@ -154,7 +154,7 @@ struct __make_tuple_indices template struct __tuple_types {}; template -class _LIBCPP_TYPE_VIS tuple_element<_Ip, __tuple_types<> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, __tuple_types<> > { public: static_assert(_Ip == 0, "tuple_element index out of range"); @@ -162,21 +162,21 @@ public: }; template -class _LIBCPP_TYPE_VIS tuple_element<0, __tuple_types<_Hp, _Tp...> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<0, __tuple_types<_Hp, _Tp...> > { public: typedef _Hp type; }; template -class _LIBCPP_TYPE_VIS tuple_element<_Ip, __tuple_types<_Hp, _Tp...> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, __tuple_types<_Hp, _Tp...> > { public: typedef typename tuple_element<_Ip-1, __tuple_types<_Tp...> >::type type; }; template -class _LIBCPP_TYPE_VIS tuple_size<__tuple_types<_Tp...> > +class _LIBCPP_TYPE_VIS_ONLY tuple_size<__tuple_types<_Tp...> > : public integral_constant { }; diff --git a/libcxx/include/__tuple_03 b/libcxx/include/__tuple_03 index 605d84df1ea4..b91c2cd48a63 100644 --- a/libcxx/include/__tuple_03 +++ b/libcxx/include/__tuple_03 @@ -19,8 +19,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template class _LIBCPP_TYPE_VIS tuple_size; -template class _LIBCPP_TYPE_VIS tuple_element; +template class _LIBCPP_TYPE_VIS_ONLY tuple_size; +template class _LIBCPP_TYPE_VIS_ONLY tuple_element; _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm index 2fc1f8ab4bb6..adf820f31b76 100644 --- a/libcxx/include/algorithm +++ b/libcxx/include/algorithm @@ -2964,11 +2964,11 @@ uniform_int_distribution<_IntType>::operator()(_URNG& __g, const param_type& __p return static_cast(__u + __p.a()); } -class __rs_default; +class _LIBCPP_TYPE_VIS __rs_default; -__rs_default __rs_get(); +_LIBCPP_FUNC_VIS __rs_default __rs_get(); -class __rs_default +class _LIBCPP_TYPE_VIS __rs_default { static unsigned __c_; @@ -2987,10 +2987,10 @@ public: static _LIBCPP_CONSTEXPR result_type min() {return _Min;} static _LIBCPP_CONSTEXPR result_type max() {return _Max;} - friend __rs_default __rs_get(); + friend _LIBCPP_FUNC_VIS __rs_default __rs_get(); }; -__rs_default __rs_get(); +_LIBCPP_FUNC_VIS __rs_default __rs_get(); template void @@ -3992,39 +3992,39 @@ sort(__wrap_iter<_Tp*> __first, __wrap_iter<_Tp*> __last, _Compare __comp) #pragma warning( push ) #pragma warning( disable: 4231) #endif // _LIBCPP_MSVC -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, char*>(char*, char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, signed char*>(signed char*, signed char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, short*>(short*, short*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, int*>(int*, int*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, unsigned*>(unsigned*, unsigned*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, long*>(long*, long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, long long*>(long long*, long long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, unsigned long long*>(unsigned long long*, unsigned long long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, float*>(float*, float*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, double*>(double*, double*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(void __sort<__less&, long double*>(long double*, long double*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, char*>(char*, char*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, signed char*>(signed char*, signed char*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, short*>(short*, short*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, int*>(int*, int*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, unsigned*>(unsigned*, unsigned*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, long*>(long*, long*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, long long*>(long long*, long long*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, unsigned long long*>(unsigned long long*, unsigned long long*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, float*>(float*, float*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, double*>(double*, double*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, long double*>(long double*, long double*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, char*>(char*, char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, signed char*>(signed char*, signed char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, short*>(short*, short*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, int*>(int*, int*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, unsigned*>(unsigned*, unsigned*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, long*>(long*, long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, long long*>(long long*, long long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, unsigned long long*>(unsigned long long*, unsigned long long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, float*>(float*, float*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, double*>(double*, double*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less&, long double*>(long double*, long double*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, char*>(char*, char*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, signed char*>(signed char*, signed char*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, short*>(short*, short*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, int*>(int*, int*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned*>(unsigned*, unsigned*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, long*>(long*, long*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, long long*>(long long*, long long*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned long long*>(unsigned long long*, unsigned long long*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, float*>(float*, float*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, double*>(double*, double*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, long double*>(long double*, long double*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(unsigned __sort5<__less&, long double*>(long double*, long double*, long double*, long double*, long double*, __less&)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS unsigned __sort5<__less&, long double*>(long double*, long double*, long double*, long double*, long double*, __less&)) #ifdef _LIBCPP_MSVC #pragma warning( pop ) #endif // _LIBCPP_MSVC diff --git a/libcxx/include/array b/libcxx/include/array index 86d1fc0be69b..3174fe943f53 100644 --- a/libcxx/include/array +++ b/libcxx/include/array @@ -118,7 +118,7 @@ template T&& get(array&&) noexcept; // constexp _LIBCPP_BEGIN_NAMESPACE_STD template -struct _LIBCPP_TYPE_VIS array +struct _LIBCPP_TYPE_VIS_ONLY array { // types: typedef array __self; @@ -285,22 +285,22 @@ swap(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) } template -class _LIBCPP_TYPE_VIS tuple_size > +class _LIBCPP_TYPE_VIS_ONLY tuple_size > : public integral_constant {}; template -class _LIBCPP_TYPE_VIS tuple_size > +class _LIBCPP_TYPE_VIS_ONLY tuple_size > : public integral_constant {}; template -class _LIBCPP_TYPE_VIS tuple_element<_Ip, array<_Tp, _Size> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, array<_Tp, _Size> > { public: typedef _Tp type; }; template -class _LIBCPP_TYPE_VIS tuple_element<_Ip, const array<_Tp, _Size> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const array<_Tp, _Size> > { public: typedef const _Tp type; diff --git a/libcxx/include/bitset b/libcxx/include/bitset index dd9be4fcb87b..4cc7dbdaef95 100644 --- a/libcxx/include/bitset +++ b/libcxx/include/bitset @@ -632,11 +632,11 @@ __bitset<0, 0>::__bitset(unsigned long long) _NOEXCEPT { } -template class _LIBCPP_TYPE_VIS bitset; -template struct _LIBCPP_TYPE_VIS hash >; +template class _LIBCPP_TYPE_VIS_ONLY bitset; +template struct _LIBCPP_TYPE_VIS_ONLY hash >; template -class _LIBCPP_TYPE_VIS bitset +class _LIBCPP_TYPE_VIS_ONLY bitset : private __bitset<_Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1, _Size> { public: @@ -1060,7 +1060,7 @@ operator^(const bitset<_Size>& __x, const bitset<_Size>& __y) _NOEXCEPT } template -struct _LIBCPP_TYPE_VIS hash > +struct _LIBCPP_TYPE_VIS_ONLY hash > : public unary_function, size_t> { _LIBCPP_INLINE_VISIBILITY diff --git a/libcxx/include/chrono b/libcxx/include/chrono index da550498b452..9fb774317dab 100644 --- a/libcxx/include/chrono +++ b/libcxx/include/chrono @@ -292,7 +292,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD namespace chrono { -template > class _LIBCPP_TYPE_VIS duration; +template > class _LIBCPP_TYPE_VIS_ONLY duration; template struct __is_duration : false_type {}; @@ -312,8 +312,8 @@ struct __is_duration > : true_type {}; } // chrono template -struct _LIBCPP_TYPE_VIS common_type, - chrono::duration<_Rep2, _Period2> > +struct _LIBCPP_TYPE_VIS_ONLY common_type, + chrono::duration<_Rep2, _Period2> > { typedef chrono::duration::type, typename __ratio_gcd<_Period1, _Period2>::type> type; @@ -390,10 +390,10 @@ duration_cast(const duration<_Rep, _Period>& __fd) } template -struct _LIBCPP_TYPE_VIS treat_as_floating_point : is_floating_point<_Rep> {}; +struct _LIBCPP_TYPE_VIS_ONLY treat_as_floating_point : is_floating_point<_Rep> {}; template -struct _LIBCPP_TYPE_VIS duration_values +struct _LIBCPP_TYPE_VIS_ONLY duration_values { public: _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep zero() {return _Rep(0);} @@ -404,7 +404,7 @@ public: // duration template -class _LIBCPP_TYPE_VIS duration +class _LIBCPP_TYPE_VIS_ONLY duration { static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration"); static_assert(__is_ratio<_Period>::value, "Second template parameter of duration must be a std::ratio"); @@ -715,7 +715,7 @@ operator%(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2 ////////////////////////////////////////////////////////// template -class _LIBCPP_TYPE_VIS time_point +class _LIBCPP_TYPE_VIS_ONLY time_point { static_assert(__is_duration<_Duration>::value, "Second template parameter of time_point must be a std::chrono::duration"); @@ -759,8 +759,8 @@ public: } // chrono template -struct _LIBCPP_TYPE_VIS common_type, - chrono::time_point<_Clock, _Duration2> > +struct _LIBCPP_TYPE_VIS_ONLY common_type, + chrono::time_point<_Clock, _Duration2> > { typedef chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type> type; }; diff --git a/libcxx/include/codecvt b/libcxx/include/codecvt index a6e4308e2512..25f4a2e1e4c0 100644 --- a/libcxx/include/codecvt +++ b/libcxx/include/codecvt @@ -73,7 +73,7 @@ enum codecvt_mode template class __codecvt_utf8; template <> -class __codecvt_utf8 +class _LIBCPP_TYPE_VIS __codecvt_utf8 : public codecvt { unsigned long _Maxcode_; @@ -108,7 +108,7 @@ protected: }; template <> -class __codecvt_utf8 +class _LIBCPP_TYPE_VIS __codecvt_utf8 : public codecvt { unsigned long _Maxcode_; @@ -143,7 +143,7 @@ protected: }; template <> -class __codecvt_utf8 +class _LIBCPP_TYPE_VIS __codecvt_utf8 : public codecvt { unsigned long _Maxcode_; @@ -179,7 +179,7 @@ protected: template -class _LIBCPP_TYPE_VIS codecvt_utf8 +class _LIBCPP_TYPE_VIS_ONLY codecvt_utf8 : public __codecvt_utf8<_Elem> { public: @@ -196,7 +196,7 @@ public: template class __codecvt_utf16; template <> -class __codecvt_utf16 +class _LIBCPP_TYPE_VIS __codecvt_utf16 : public codecvt { unsigned long _Maxcode_; @@ -231,7 +231,7 @@ protected: }; template <> -class __codecvt_utf16 +class _LIBCPP_TYPE_VIS __codecvt_utf16 : public codecvt { unsigned long _Maxcode_; @@ -266,7 +266,7 @@ protected: }; template <> -class __codecvt_utf16 +class _LIBCPP_TYPE_VIS __codecvt_utf16 : public codecvt { unsigned long _Maxcode_; @@ -301,7 +301,7 @@ protected: }; template <> -class __codecvt_utf16 +class _LIBCPP_TYPE_VIS __codecvt_utf16 : public codecvt { unsigned long _Maxcode_; @@ -336,7 +336,7 @@ protected: }; template <> -class __codecvt_utf16 +class _LIBCPP_TYPE_VIS __codecvt_utf16 : public codecvt { unsigned long _Maxcode_; @@ -371,7 +371,7 @@ protected: }; template <> -class __codecvt_utf16 +class _LIBCPP_TYPE_VIS __codecvt_utf16 : public codecvt { unsigned long _Maxcode_; @@ -407,7 +407,7 @@ protected: template -class _LIBCPP_TYPE_VIS codecvt_utf16 +class _LIBCPP_TYPE_VIS_ONLY codecvt_utf16 : public __codecvt_utf16<_Elem, _Mode & little_endian> { public: @@ -424,7 +424,7 @@ public: template class __codecvt_utf8_utf16; template <> -class __codecvt_utf8_utf16 +class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16 : public codecvt { unsigned long _Maxcode_; @@ -459,7 +459,7 @@ protected: }; template <> -class __codecvt_utf8_utf16 +class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16 : public codecvt { unsigned long _Maxcode_; @@ -494,7 +494,7 @@ protected: }; template <> -class __codecvt_utf8_utf16 +class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16 : public codecvt { unsigned long _Maxcode_; @@ -530,7 +530,7 @@ protected: template -class _LIBCPP_TYPE_VIS codecvt_utf8_utf16 +class _LIBCPP_TYPE_VIS_ONLY codecvt_utf8_utf16 : public __codecvt_utf8_utf16<_Elem> { public: diff --git a/libcxx/include/complex b/libcxx/include/complex index dddc58e0dc91..e1d72f4d5962 100644 --- a/libcxx/include/complex +++ b/libcxx/include/complex @@ -255,13 +255,13 @@ template _LIBCPP_BEGIN_NAMESPACE_STD -template class _LIBCPP_TYPE_VIS complex; +template class _LIBCPP_TYPE_VIS_ONLY complex; template complex<_Tp> operator*(const complex<_Tp>& __z, const complex<_Tp>& __w); template complex<_Tp> operator/(const complex<_Tp>& __x, const complex<_Tp>& __y); template -class _LIBCPP_TYPE_VIS complex +class _LIBCPP_TYPE_VIS_ONLY complex { public: typedef _Tp value_type; @@ -319,11 +319,11 @@ public: } }; -template<> class _LIBCPP_TYPE_VIS complex; -template<> class _LIBCPP_TYPE_VIS complex; +template<> class _LIBCPP_TYPE_VIS_ONLY complex; +template<> class _LIBCPP_TYPE_VIS_ONLY complex; template<> -class _LIBCPP_TYPE_VIS complex +class _LIBCPP_TYPE_VIS_ONLY complex { float __re_; float __im_; @@ -379,7 +379,7 @@ public: }; template<> -class _LIBCPP_TYPE_VIS complex +class _LIBCPP_TYPE_VIS_ONLY complex { double __re_; double __im_; @@ -435,7 +435,7 @@ public: }; template<> -class _LIBCPP_TYPE_VIS complex +class _LIBCPP_TYPE_VIS_ONLY complex { long double __re_; long double __im_; diff --git a/libcxx/include/cstddef b/libcxx/include/cstddef index c26377216028..7ef16ff2a367 100644 --- a/libcxx/include/cstddef +++ b/libcxx/include/cstddef @@ -56,7 +56,7 @@ typedef long double max_align_t; #ifdef _LIBCPP_HAS_NO_NULLPTR -struct _LIBCPP_TYPE_VIS nullptr_t +struct _LIBCPP_TYPE_VIS_ONLY nullptr_t { void* __lx; diff --git a/libcxx/include/deque b/libcxx/include/deque index 86272721f217..4faa87f8b343 100644 --- a/libcxx/include/deque +++ b/libcxx/include/deque @@ -170,7 +170,7 @@ template class __deque_base; template -class _LIBCPP_TYPE_VIS __deque_iterator; +class _LIBCPP_TYPE_VIS_ONLY __deque_iterator; template @@ -262,7 +262,7 @@ move_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, template -class _LIBCPP_TYPE_VIS __deque_iterator +class _LIBCPP_TYPE_VIS_ONLY __deque_iterator { typedef _MapPointer __map_iterator; public: @@ -414,9 +414,9 @@ private: : __m_iter_(__m), __ptr_(__p) {} template friend class __deque_base; - template friend class _LIBCPP_TYPE_VIS deque; + template friend class _LIBCPP_TYPE_VIS_ONLY deque; template - friend class _LIBCPP_TYPE_VIS __deque_iterator; + friend class _LIBCPP_TYPE_VIS_ONLY __deque_iterator; template @@ -1178,7 +1178,7 @@ __deque_base<_Tp, _Allocator>::clear() _NOEXCEPT } template > -class _LIBCPP_TYPE_VIS deque +class _LIBCPP_TYPE_VIS_ONLY deque : private __deque_base<_Tp, _Allocator> { public: diff --git a/libcxx/include/exception b/libcxx/include/exception index 37bfc57efbbc..cad802e056a5 100644 --- a/libcxx/include/exception +++ b/libcxx/include/exception @@ -118,8 +118,8 @@ _LIBCPP_FUNC_VIS bool uncaught_exception() _NOEXCEPT; class _LIBCPP_TYPE_VIS exception_ptr; -exception_ptr current_exception() _NOEXCEPT; -_LIBCPP_NORETURN void rethrow_exception(exception_ptr); +_LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT; +_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr); class _LIBCPP_TYPE_VIS exception_ptr { @@ -142,8 +142,8 @@ public: bool operator!=(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT {return !(__x == __y);} - friend exception_ptr current_exception() _NOEXCEPT; - friend void rethrow_exception(exception_ptr); + friend _LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT; + friend _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr); }; template diff --git a/libcxx/include/ext/__hash b/libcxx/include/ext/__hash index f6ecfe3605c7..04975bfd0521 100644 --- a/libcxx/include/ext/__hash +++ b/libcxx/include/ext/__hash @@ -19,10 +19,10 @@ namespace __gnu_cxx { using namespace std; -template struct _LIBCPP_TYPE_VIS hash : public std::hash +template struct _LIBCPP_TYPE_VIS_ONLY hash : public std::hash { }; -template <> struct _LIBCPP_TYPE_VIS hash +template <> struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -32,7 +32,7 @@ template <> struct _LIBCPP_TYPE_VIS hash } }; -template <> struct _LIBCPP_TYPE_VIS hash +template <> struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY diff --git a/libcxx/include/ext/hash_map b/libcxx/include/ext/hash_map index a6fe894e4d94..3e474b02e7d7 100644 --- a/libcxx/include/ext/hash_map +++ b/libcxx/include/ext/hash_map @@ -361,7 +361,7 @@ public: }; template -class _LIBCPP_TYPE_VIS __hash_map_iterator +class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator { _HashIterator __i_; @@ -404,15 +404,15 @@ public: bool operator!=(const __hash_map_iterator& __x, const __hash_map_iterator& __y) {return __x.__i_ != __y.__i_;} - template friend class _LIBCPP_TYPE_VIS hash_map; - template friend class _LIBCPP_TYPE_VIS hash_multimap; - template friend class _LIBCPP_TYPE_VIS __hash_const_iterator; - template friend class _LIBCPP_TYPE_VIS __hash_const_local_iterator; - template friend class _LIBCPP_TYPE_VIS __hash_map_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY hash_map; + template friend class _LIBCPP_TYPE_VIS_ONLY hash_multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; }; template -class _LIBCPP_TYPE_VIS __hash_map_const_iterator +class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator { _HashIterator __i_; @@ -463,15 +463,15 @@ public: bool operator!=(const __hash_map_const_iterator& __x, const __hash_map_const_iterator& __y) {return __x.__i_ != __y.__i_;} - template friend class _LIBCPP_TYPE_VIS hash_map; - template friend class _LIBCPP_TYPE_VIS hash_multimap; - template friend class _LIBCPP_TYPE_VIS __hash_const_iterator; - template friend class _LIBCPP_TYPE_VIS __hash_const_local_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY hash_map; + template friend class _LIBCPP_TYPE_VIS_ONLY hash_multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; }; template , class _Pred = equal_to<_Key>, class _Alloc = allocator > > -class _LIBCPP_TYPE_VIS hash_map +class _LIBCPP_TYPE_VIS_ONLY hash_map { public: // types @@ -750,7 +750,7 @@ operator!=(const hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, template , class _Pred = equal_to<_Key>, class _Alloc = allocator > > -class _LIBCPP_TYPE_VIS hash_multimap +class _LIBCPP_TYPE_VIS_ONLY hash_multimap { public: // types diff --git a/libcxx/include/ext/hash_set b/libcxx/include/ext/hash_set index 52bbeee13c35..deffcb61b064 100644 --- a/libcxx/include/ext/hash_set +++ b/libcxx/include/ext/hash_set @@ -208,7 +208,7 @@ using namespace std; template , class _Pred = equal_to<_Value>, class _Alloc = allocator<_Value> > -class _LIBCPP_TYPE_VIS hash_set +class _LIBCPP_TYPE_VIS_ONLY hash_set { public: // types @@ -429,7 +429,7 @@ operator!=(const hash_set<_Value, _Hash, _Pred, _Alloc>& __x, template , class _Pred = equal_to<_Value>, class _Alloc = allocator<_Value> > -class _LIBCPP_TYPE_VIS hash_multiset +class _LIBCPP_TYPE_VIS_ONLY hash_multiset { public: // types diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list index 88bf75f90d7c..a524f2ced691 100644 --- a/libcxx/include/forward_list +++ b/libcxx/include/forward_list @@ -212,11 +212,11 @@ struct __forward_list_node value_type __value_; }; -template class _LIBCPP_TYPE_VIS forward_list; -template class _LIBCPP_TYPE_VIS __forward_list_const_iterator; +template class _LIBCPP_TYPE_VIS_ONLY forward_list; +template class _LIBCPP_TYPE_VIS_ONLY __forward_list_const_iterator; template -class _LIBCPP_TYPE_VIS __forward_list_iterator +class _LIBCPP_TYPE_VIS_ONLY __forward_list_iterator { typedef _NodePtr __node_pointer; @@ -225,8 +225,8 @@ class _LIBCPP_TYPE_VIS __forward_list_iterator _LIBCPP_INLINE_VISIBILITY explicit __forward_list_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {} - template friend class _LIBCPP_TYPE_VIS forward_list; - template friend class _LIBCPP_TYPE_VIS __forward_list_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY forward_list; + template friend class _LIBCPP_TYPE_VIS_ONLY __forward_list_const_iterator; public: typedef forward_iterator_tag iterator_category; @@ -276,7 +276,7 @@ public: }; template -class _LIBCPP_TYPE_VIS __forward_list_const_iterator +class _LIBCPP_TYPE_VIS_ONLY __forward_list_const_iterator { typedef _NodeConstPtr __node_const_pointer; @@ -542,7 +542,7 @@ __forward_list_base<_Tp, _Alloc>::clear() _NOEXCEPT } template > -class _LIBCPP_TYPE_VIS forward_list +class _LIBCPP_TYPE_VIS_ONLY forward_list : private __forward_list_base<_Tp, _Alloc> { typedef __forward_list_base<_Tp, _Alloc> base; diff --git a/libcxx/include/fstream b/libcxx/include/fstream index e3f8306f4a01..38778c6779aa 100644 --- a/libcxx/include/fstream +++ b/libcxx/include/fstream @@ -180,7 +180,7 @@ typedef basic_fstream wfstream; _LIBCPP_BEGIN_NAMESPACE_STD template -class _LIBCPP_TYPE_VIS basic_filebuf +class _LIBCPP_TYPE_VIS_ONLY basic_filebuf : public basic_streambuf<_CharT, _Traits> { public: @@ -994,7 +994,7 @@ basic_filebuf<_CharT, _Traits>::__write_mode() // basic_ifstream template -class _LIBCPP_TYPE_VIS basic_ifstream +class _LIBCPP_TYPE_VIS_ONLY basic_ifstream : public basic_istream<_CharT, _Traits> { public: @@ -1139,7 +1139,7 @@ basic_ifstream<_CharT, _Traits>::close() // basic_ofstream template -class _LIBCPP_TYPE_VIS basic_ofstream +class _LIBCPP_TYPE_VIS_ONLY basic_ofstream : public basic_ostream<_CharT, _Traits> { public: @@ -1284,7 +1284,7 @@ basic_ofstream<_CharT, _Traits>::close() // basic_fstream template -class _LIBCPP_TYPE_VIS basic_fstream +class _LIBCPP_TYPE_VIS_ONLY basic_fstream : public basic_iostream<_CharT, _Traits> { public: diff --git a/libcxx/include/functional b/libcxx/include/functional index 2130f0e36cd5..287bf72e5558 100644 --- a/libcxx/include/functional +++ b/libcxx/include/functional @@ -502,7 +502,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS plus : binary_function<_Tp, _Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY plus : binary_function<_Tp, _Tp, _Tp> { _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const {return __x + __y;} @@ -510,7 +510,7 @@ struct _LIBCPP_TYPE_VIS plus : binary_function<_Tp, _Tp, _Tp> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS plus +struct _LIBCPP_TYPE_VIS_ONLY plus { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -524,7 +524,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS minus : binary_function<_Tp, _Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY minus : binary_function<_Tp, _Tp, _Tp> { _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const {return __x - __y;} @@ -532,7 +532,7 @@ struct _LIBCPP_TYPE_VIS minus : binary_function<_Tp, _Tp, _Tp> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS minus +struct _LIBCPP_TYPE_VIS_ONLY minus { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -546,7 +546,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS multiplies : binary_function<_Tp, _Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY multiplies : binary_function<_Tp, _Tp, _Tp> { _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const {return __x * __y;} @@ -554,7 +554,7 @@ struct _LIBCPP_TYPE_VIS multiplies : binary_function<_Tp, _Tp, _Tp> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS multiplies +struct _LIBCPP_TYPE_VIS_ONLY multiplies { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -568,7 +568,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS divides : binary_function<_Tp, _Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY divides : binary_function<_Tp, _Tp, _Tp> { _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const {return __x / __y;} @@ -576,7 +576,7 @@ struct _LIBCPP_TYPE_VIS divides : binary_function<_Tp, _Tp, _Tp> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS divides +struct _LIBCPP_TYPE_VIS_ONLY divides { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -590,7 +590,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS modulus : binary_function<_Tp, _Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY modulus : binary_function<_Tp, _Tp, _Tp> { _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const {return __x % __y;} @@ -598,7 +598,7 @@ struct _LIBCPP_TYPE_VIS modulus : binary_function<_Tp, _Tp, _Tp> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS modulus +struct _LIBCPP_TYPE_VIS_ONLY modulus { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -612,7 +612,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS negate : unary_function<_Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY negate : unary_function<_Tp, _Tp> { _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x) const {return -__x;} @@ -620,7 +620,7 @@ struct _LIBCPP_TYPE_VIS negate : unary_function<_Tp, _Tp> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS negate +struct _LIBCPP_TYPE_VIS_ONLY negate { template _LIBCPP_INLINE_VISIBILITY auto operator()(_Tp&& __x) const @@ -634,7 +634,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS equal_to : binary_function<_Tp, _Tp, bool> +struct _LIBCPP_TYPE_VIS_ONLY equal_to : binary_function<_Tp, _Tp, bool> { _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const {return __x == __y;} @@ -642,7 +642,7 @@ struct _LIBCPP_TYPE_VIS equal_to : binary_function<_Tp, _Tp, bool> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS equal_to +struct _LIBCPP_TYPE_VIS_ONLY equal_to { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -656,7 +656,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS not_equal_to : binary_function<_Tp, _Tp, bool> +struct _LIBCPP_TYPE_VIS_ONLY not_equal_to : binary_function<_Tp, _Tp, bool> { _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const {return __x != __y;} @@ -664,7 +664,7 @@ struct _LIBCPP_TYPE_VIS not_equal_to : binary_function<_Tp, _Tp, bool> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS not_equal_to +struct _LIBCPP_TYPE_VIS_ONLY not_equal_to { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -678,7 +678,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS greater : binary_function<_Tp, _Tp, bool> +struct _LIBCPP_TYPE_VIS_ONLY greater : binary_function<_Tp, _Tp, bool> { _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const {return __x > __y;} @@ -686,7 +686,7 @@ struct _LIBCPP_TYPE_VIS greater : binary_function<_Tp, _Tp, bool> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS greater +struct _LIBCPP_TYPE_VIS_ONLY greater { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -702,7 +702,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS greater_equal : binary_function<_Tp, _Tp, bool> +struct _LIBCPP_TYPE_VIS_ONLY greater_equal : binary_function<_Tp, _Tp, bool> { _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const {return __x >= __y;} @@ -710,7 +710,7 @@ struct _LIBCPP_TYPE_VIS greater_equal : binary_function<_Tp, _Tp, bool> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS greater_equal +struct _LIBCPP_TYPE_VIS_ONLY greater_equal { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -724,7 +724,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS less_equal : binary_function<_Tp, _Tp, bool> +struct _LIBCPP_TYPE_VIS_ONLY less_equal : binary_function<_Tp, _Tp, bool> { _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const {return __x <= __y;} @@ -732,7 +732,7 @@ struct _LIBCPP_TYPE_VIS less_equal : binary_function<_Tp, _Tp, bool> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS less_equal +struct _LIBCPP_TYPE_VIS_ONLY less_equal { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -746,7 +746,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS logical_and : binary_function<_Tp, _Tp, bool> +struct _LIBCPP_TYPE_VIS_ONLY logical_and : binary_function<_Tp, _Tp, bool> { _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const {return __x && __y;} @@ -754,7 +754,7 @@ struct _LIBCPP_TYPE_VIS logical_and : binary_function<_Tp, _Tp, bool> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS logical_and +struct _LIBCPP_TYPE_VIS_ONLY logical_and { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -768,7 +768,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS logical_or : binary_function<_Tp, _Tp, bool> +struct _LIBCPP_TYPE_VIS_ONLY logical_or : binary_function<_Tp, _Tp, bool> { _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const {return __x || __y;} @@ -776,7 +776,7 @@ struct _LIBCPP_TYPE_VIS logical_or : binary_function<_Tp, _Tp, bool> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS logical_or +struct _LIBCPP_TYPE_VIS_ONLY logical_or { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -790,7 +790,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS logical_not : unary_function<_Tp, bool> +struct _LIBCPP_TYPE_VIS_ONLY logical_not : unary_function<_Tp, bool> { _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x) const {return !__x;} @@ -798,7 +798,7 @@ struct _LIBCPP_TYPE_VIS logical_not : unary_function<_Tp, bool> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS logical_not +struct _LIBCPP_TYPE_VIS_ONLY logical_not { template _LIBCPP_INLINE_VISIBILITY auto operator()(_Tp&& __x) const @@ -812,7 +812,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS bit_and : binary_function<_Tp, _Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY bit_and : binary_function<_Tp, _Tp, _Tp> { _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const {return __x & __y;} @@ -820,7 +820,7 @@ struct _LIBCPP_TYPE_VIS bit_and : binary_function<_Tp, _Tp, _Tp> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS bit_and +struct _LIBCPP_TYPE_VIS_ONLY bit_and { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -834,7 +834,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS bit_or : binary_function<_Tp, _Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY bit_or : binary_function<_Tp, _Tp, _Tp> { _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const {return __x | __y;} @@ -842,7 +842,7 @@ struct _LIBCPP_TYPE_VIS bit_or : binary_function<_Tp, _Tp, _Tp> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS bit_or +struct _LIBCPP_TYPE_VIS_ONLY bit_or { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -856,7 +856,7 @@ template #else template #endif -struct _LIBCPP_TYPE_VIS bit_xor : binary_function<_Tp, _Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY bit_xor : binary_function<_Tp, _Tp, _Tp> { _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const {return __x ^ __y;} @@ -864,7 +864,7 @@ struct _LIBCPP_TYPE_VIS bit_xor : binary_function<_Tp, _Tp, _Tp> #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS bit_xor +struct _LIBCPP_TYPE_VIS_ONLY bit_xor { template _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const @@ -875,14 +875,14 @@ struct _LIBCPP_TYPE_VIS bit_xor #if _LIBCPP_STD_VER > 11 template -struct _LIBCPP_TYPE_VIS bit_not : unary_function<_Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY bit_not : unary_function<_Tp, _Tp> { _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x) const {return ~__x;} }; template <> -struct _LIBCPP_TYPE_VIS bit_not +struct _LIBCPP_TYPE_VIS_ONLY bit_not { template _LIBCPP_INLINE_VISIBILITY auto operator()(_Tp&& __x) const @@ -891,7 +891,7 @@ struct _LIBCPP_TYPE_VIS bit_not #endif template -class _LIBCPP_TYPE_VIS unary_negate +class _LIBCPP_TYPE_VIS_ONLY unary_negate : public unary_function { _Predicate __pred_; @@ -908,7 +908,7 @@ unary_negate<_Predicate> not1(const _Predicate& __pred) {return unary_negate<_Predicate>(__pred);} template -class _LIBCPP_TYPE_VIS binary_negate +class _LIBCPP_TYPE_VIS_ONLY binary_negate : public binary_function @@ -928,7 +928,7 @@ binary_negate<_Predicate> not2(const _Predicate& __pred) {return binary_negate<_Predicate>(__pred);} template -class _LIBCPP_TYPE_VIS binder1st +class _LIBCPP_TYPE_VIS_ONLY binder1st : public unary_function { @@ -954,7 +954,7 @@ bind1st(const __Operation& __op, const _Tp& __x) {return binder1st<__Operation>(__op, __x);} template -class _LIBCPP_TYPE_VIS binder2nd +class _LIBCPP_TYPE_VIS_ONLY binder2nd : public unary_function { @@ -980,7 +980,7 @@ bind2nd(const __Operation& __op, const _Tp& __x) {return binder2nd<__Operation>(__op, __x);} template -class _LIBCPP_TYPE_VIS pointer_to_unary_function +class _LIBCPP_TYPE_VIS_ONLY pointer_to_unary_function : public unary_function<_Arg, _Result> { _Result (*__f_)(_Arg); @@ -998,7 +998,7 @@ ptr_fun(_Result (*__f)(_Arg)) {return pointer_to_unary_function<_Arg,_Result>(__f);} template -class _LIBCPP_TYPE_VIS pointer_to_binary_function +class _LIBCPP_TYPE_VIS_ONLY pointer_to_binary_function : public binary_function<_Arg1, _Arg2, _Result> { _Result (*__f_)(_Arg1, _Arg2); @@ -1016,7 +1016,7 @@ ptr_fun(_Result (*__f)(_Arg1,_Arg2)) {return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f);} template -class _LIBCPP_TYPE_VIS mem_fun_t : public unary_function<_Tp*, _Sp> +class _LIBCPP_TYPE_VIS_ONLY mem_fun_t : public unary_function<_Tp*, _Sp> { _Sp (_Tp::*__p_)(); public: @@ -1027,7 +1027,7 @@ public: }; template -class _LIBCPP_TYPE_VIS mem_fun1_t : public binary_function<_Tp*, _Ap, _Sp> +class _LIBCPP_TYPE_VIS_ONLY mem_fun1_t : public binary_function<_Tp*, _Ap, _Sp> { _Sp (_Tp::*__p_)(_Ap); public: @@ -1050,7 +1050,7 @@ mem_fun(_Sp (_Tp::*__f)(_Ap)) {return mem_fun1_t<_Sp,_Tp,_Ap>(__f);} template -class _LIBCPP_TYPE_VIS mem_fun_ref_t : public unary_function<_Tp, _Sp> +class _LIBCPP_TYPE_VIS_ONLY mem_fun_ref_t : public unary_function<_Tp, _Sp> { _Sp (_Tp::*__p_)(); public: @@ -1061,7 +1061,7 @@ public: }; template -class _LIBCPP_TYPE_VIS mem_fun1_ref_t : public binary_function<_Tp, _Ap, _Sp> +class _LIBCPP_TYPE_VIS_ONLY mem_fun1_ref_t : public binary_function<_Tp, _Ap, _Sp> { _Sp (_Tp::*__p_)(_Ap); public: @@ -1084,7 +1084,7 @@ mem_fun_ref(_Sp (_Tp::*__f)(_Ap)) {return mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);} template -class _LIBCPP_TYPE_VIS const_mem_fun_t : public unary_function +class _LIBCPP_TYPE_VIS_ONLY const_mem_fun_t : public unary_function { _Sp (_Tp::*__p_)() const; public: @@ -1095,7 +1095,7 @@ public: }; template -class _LIBCPP_TYPE_VIS const_mem_fun1_t : public binary_function +class _LIBCPP_TYPE_VIS_ONLY const_mem_fun1_t : public binary_function { _Sp (_Tp::*__p_)(_Ap) const; public: @@ -1118,7 +1118,7 @@ mem_fun(_Sp (_Tp::*__f)(_Ap) const) {return const_mem_fun1_t<_Sp,_Tp,_Ap>(__f);} template -class _LIBCPP_TYPE_VIS const_mem_fun_ref_t : public unary_function<_Tp, _Sp> +class _LIBCPP_TYPE_VIS_ONLY const_mem_fun_ref_t : public unary_function<_Tp, _Sp> { _Sp (_Tp::*__p_)() const; public: @@ -1129,7 +1129,7 @@ public: }; template -class _LIBCPP_TYPE_VIS const_mem_fun1_ref_t +class _LIBCPP_TYPE_VIS_ONLY const_mem_fun1_ref_t : public binary_function<_Tp, _Ap, _Sp> { _Sp (_Tp::*__p_)(_Ap) const; @@ -1228,7 +1228,7 @@ class _LIBCPP_EXCEPTION_ABI bad_function_call { }; -template class _LIBCPP_TYPE_VIS function; // undefined +template class _LIBCPP_TYPE_VIS_ONLY function; // undefined namespace __function { @@ -1379,7 +1379,7 @@ __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target_type() const _NOEXCEPT } // __function template -class _LIBCPP_TYPE_VIS function<_Rp(_ArgTypes...)> +class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_ArgTypes...)> : public __function::__maybe_derive_from_unary_function<_Rp(_ArgTypes...)>, public __function::__maybe_derive_from_binary_function<_Rp(_ArgTypes...)> { @@ -1801,11 +1801,11 @@ swap(function<_Rp(_ArgTypes...)>& __x, function<_Rp(_ArgTypes...)>& __y) _NOEXCE {return __x.swap(__y);} template struct __is_bind_expression : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_bind_expression +template struct _LIBCPP_TYPE_VIS_ONLY is_bind_expression : public __is_bind_expression::type> {}; template struct __is_placeholder : public integral_constant {}; -template struct _LIBCPP_TYPE_VIS is_placeholder +template struct _LIBCPP_TYPE_VIS_ONLY is_placeholder : public __is_placeholder::type> {}; namespace placeholders @@ -1813,16 +1813,16 @@ namespace placeholders template struct __ph {}; -extern __ph<1> _1; -extern __ph<2> _2; -extern __ph<3> _3; -extern __ph<4> _4; -extern __ph<5> _5; -extern __ph<6> _6; -extern __ph<7> _7; -extern __ph<8> _8; -extern __ph<9> _9; -extern __ph<10> _10; +_LIBCPP_FUNC_VIS extern __ph<1> _1; +_LIBCPP_FUNC_VIS extern __ph<2> _2; +_LIBCPP_FUNC_VIS extern __ph<3> _3; +_LIBCPP_FUNC_VIS extern __ph<4> _4; +_LIBCPP_FUNC_VIS extern __ph<5> _5; +_LIBCPP_FUNC_VIS extern __ph<6> _6; +_LIBCPP_FUNC_VIS extern __ph<7> _7; +_LIBCPP_FUNC_VIS extern __ph<8> _8; +_LIBCPP_FUNC_VIS extern __ph<9> _9; +_LIBCPP_FUNC_VIS extern __ph<10> _10; } // placeholders @@ -2184,7 +2184,7 @@ bind(_Fp&& __f, _BoundArgs&&... __bound_args) #endif // _LIBCPP_HAS_NO_VARIADICS template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2192,7 +2192,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2200,7 +2200,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2208,7 +2208,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2218,7 +2218,7 @@ struct _LIBCPP_TYPE_VIS hash #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2226,7 +2226,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2236,7 +2236,7 @@ struct _LIBCPP_TYPE_VIS hash #endif // _LIBCPP_HAS_NO_UNICODE_CHARS template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2244,7 +2244,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2252,7 +2252,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2260,7 +2260,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2268,7 +2268,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2276,7 +2276,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2284,7 +2284,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -2292,19 +2292,19 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public __scalar_hash { }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public __scalar_hash { }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public __scalar_hash { _LIBCPP_INLINE_VISIBILITY @@ -2318,7 +2318,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public __scalar_hash { _LIBCPP_INLINE_VISIBILITY @@ -2332,7 +2332,7 @@ struct _LIBCPP_TYPE_VIS hash }; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public __scalar_hash { _LIBCPP_INLINE_VISIBILITY diff --git a/libcxx/include/future b/libcxx/include/future index 00c99bc09068..b249464e4314 100644 --- a/libcxx/include/future +++ b/libcxx/include/future @@ -387,11 +387,11 @@ _LIBCPP_DECLARE_STRONG_ENUM(future_errc) _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(future_errc) template <> -struct _LIBCPP_TYPE_VIS is_error_code_enum : public true_type {}; +struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum : public true_type {}; #ifdef _LIBCPP_HAS_NO_STRONG_ENUMS template <> -struct _LIBCPP_TYPE_VIS is_error_code_enum : public true_type { }; +struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum : public true_type { }; #endif //enum class launch @@ -508,7 +508,7 @@ public: virtual ~future_error() _NOEXCEPT; }; -class __assoc_sub_state +class _LIBCPP_TYPE_VIS __assoc_sub_state : public __shared_count { protected: @@ -1032,12 +1032,12 @@ __async_assoc_state::__on_zero_shared() _NOEXCEPT base::__on_zero_shared(); } -template class _LIBCPP_TYPE_VIS promise; -template class _LIBCPP_TYPE_VIS shared_future; +template class _LIBCPP_TYPE_VIS_ONLY promise; +template class _LIBCPP_TYPE_VIS_ONLY shared_future; // future -template class _LIBCPP_TYPE_VIS future; +template class _LIBCPP_TYPE_VIS_ONLY future; template future<_Rp> @@ -1056,7 +1056,7 @@ __make_async_assoc_state(_Fp __f); #endif template -class _LIBCPP_TYPE_VIS future +class _LIBCPP_TYPE_VIS_ONLY future { __assoc_state<_Rp>* __state_; @@ -1160,7 +1160,7 @@ future<_Rp>::get() } template -class _LIBCPP_TYPE_VIS future<_Rp&> +class _LIBCPP_TYPE_VIS_ONLY future<_Rp&> { __assoc_state<_Rp&>* __state_; @@ -1341,7 +1341,7 @@ swap(future<_Rp>& __x, future<_Rp>& __y) _NOEXCEPT template class packaged_task; template -class _LIBCPP_TYPE_VIS promise +class _LIBCPP_TYPE_VIS_ONLY promise { __assoc_state<_Rp>* __state_; @@ -1519,7 +1519,7 @@ promise<_Rp>::set_exception_at_thread_exit(exception_ptr __p) // promise template -class _LIBCPP_TYPE_VIS promise<_Rp&> +class _LIBCPP_TYPE_VIS_ONLY promise<_Rp&> { __assoc_state<_Rp&>* __state_; @@ -1736,7 +1736,7 @@ swap(promise<_Rp>& __x, promise<_Rp>& __y) _NOEXCEPT } template - struct _LIBCPP_TYPE_VIS uses_allocator, _Alloc> + struct _LIBCPP_TYPE_VIS_ONLY uses_allocator, _Alloc> : public true_type {}; #ifndef _LIBCPP_HAS_NO_VARIADICS @@ -2000,7 +2000,7 @@ __packaged_task_function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) cons } template -class _LIBCPP_TYPE_VIS packaged_task<_Rp(_ArgTypes...)> +class _LIBCPP_TYPE_VIS_ONLY packaged_task<_Rp(_ArgTypes...)> { public: typedef _Rp result_type; @@ -2115,7 +2115,7 @@ packaged_task<_Rp(_ArgTypes...)>::reset() } template -class _LIBCPP_TYPE_VIS packaged_task +class _LIBCPP_TYPE_VIS_ONLY packaged_task { public: typedef void result_type; @@ -2240,7 +2240,7 @@ swap(packaged_task<_Callable>& __x, packaged_task<_Callable>& __y) _NOEXCEPT } template -struct _LIBCPP_TYPE_VIS uses_allocator, _Alloc> +struct _LIBCPP_TYPE_VIS_ONLY uses_allocator, _Alloc> : public true_type {}; template @@ -2329,7 +2329,7 @@ async(_Fp&& __f, _Args&&... __args) // shared_future template -class _LIBCPP_TYPE_VIS shared_future +class _LIBCPP_TYPE_VIS_ONLY shared_future { __assoc_state<_Rp>* __state_; @@ -2403,7 +2403,7 @@ shared_future<_Rp>::operator=(const shared_future& __rhs) } template -class _LIBCPP_TYPE_VIS shared_future<_Rp&> +class _LIBCPP_TYPE_VIS_ONLY shared_future<_Rp&> { __assoc_state<_Rp&>* __state_; diff --git a/libcxx/include/initializer_list b/libcxx/include/initializer_list index 181313d1704b..cdcd6881679c 100644 --- a/libcxx/include/initializer_list +++ b/libcxx/include/initializer_list @@ -56,7 +56,7 @@ namespace std // purposefully not versioned #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS template -class _LIBCPP_TYPE_VIS initializer_list +class _LIBCPP_TYPE_VIS_ONLY initializer_list { const _Ep* __begin_; size_t __size_; diff --git a/libcxx/include/ios b/libcxx/include/ios index c10003d0f498..f3d4840278f4 100644 --- a/libcxx/include/ios +++ b/libcxx/include/ios @@ -380,11 +380,11 @@ _LIBCPP_DECLARE_STRONG_ENUM(io_errc) _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(io_errc) template <> -struct _LIBCPP_TYPE_VIS is_error_code_enum : public true_type { }; +struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum : public true_type { }; #ifdef _LIBCPP_HAS_NO_STRONG_ENUMS template <> -struct _LIBCPP_TYPE_VIS is_error_code_enum : public true_type { }; +struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum : public true_type { }; #endif _LIBCPP_FUNC_VIS @@ -560,7 +560,7 @@ ios_base::exceptions(iostate __except) } template -class _LIBCPP_TYPE_VIS basic_ios +class _LIBCPP_TYPE_VIS_ONLY basic_ios : public ios_base { public: diff --git a/libcxx/include/iosfwd b/libcxx/include/iosfwd index 849d7e517026..d24c227bef79 100644 --- a/libcxx/include/iosfwd +++ b/libcxx/include/iosfwd @@ -97,47 +97,47 @@ _LIBCPP_BEGIN_NAMESPACE_STD class _LIBCPP_TYPE_VIS ios_base; -template struct _LIBCPP_TYPE_VIS char_traits; -template class _LIBCPP_TYPE_VIS allocator; +template struct _LIBCPP_TYPE_VIS_ONLY char_traits; +template class _LIBCPP_TYPE_VIS_ONLY allocator; template > - class _LIBCPP_TYPE_VIS basic_ios; + class _LIBCPP_TYPE_VIS_ONLY basic_ios; template > - class _LIBCPP_TYPE_VIS basic_streambuf; + class _LIBCPP_TYPE_VIS_ONLY basic_streambuf; template > - class _LIBCPP_TYPE_VIS basic_istream; + class _LIBCPP_TYPE_VIS_ONLY basic_istream; template > - class _LIBCPP_TYPE_VIS basic_ostream; + class _LIBCPP_TYPE_VIS_ONLY basic_ostream; template > - class _LIBCPP_TYPE_VIS basic_iostream; + class _LIBCPP_TYPE_VIS_ONLY basic_iostream; template , class _Allocator = allocator<_CharT> > - class _LIBCPP_TYPE_VIS basic_stringbuf; + class _LIBCPP_TYPE_VIS_ONLY basic_stringbuf; template , class _Allocator = allocator<_CharT> > - class _LIBCPP_TYPE_VIS basic_istringstream; + class _LIBCPP_TYPE_VIS_ONLY basic_istringstream; template , class _Allocator = allocator<_CharT> > - class _LIBCPP_TYPE_VIS basic_ostringstream; + class _LIBCPP_TYPE_VIS_ONLY basic_ostringstream; template , class _Allocator = allocator<_CharT> > - class _LIBCPP_TYPE_VIS basic_stringstream; + class _LIBCPP_TYPE_VIS_ONLY basic_stringstream; template > - class _LIBCPP_TYPE_VIS basic_filebuf; + class _LIBCPP_TYPE_VIS_ONLY basic_filebuf; template > - class _LIBCPP_TYPE_VIS basic_ifstream; + class _LIBCPP_TYPE_VIS_ONLY basic_ifstream; template > - class _LIBCPP_TYPE_VIS basic_ofstream; + class _LIBCPP_TYPE_VIS_ONLY basic_ofstream; template > - class _LIBCPP_TYPE_VIS basic_fstream; + class _LIBCPP_TYPE_VIS_ONLY basic_fstream; template > - class _LIBCPP_TYPE_VIS istreambuf_iterator; + class _LIBCPP_TYPE_VIS_ONLY istreambuf_iterator; template > - class _LIBCPP_TYPE_VIS ostreambuf_iterator; + class _LIBCPP_TYPE_VIS_ONLY ostreambuf_iterator; typedef basic_ios ios; typedef basic_ios wios; @@ -172,7 +172,7 @@ typedef basic_ifstream wifstream; typedef basic_ofstream wofstream; typedef basic_fstream wfstream; -template class _LIBCPP_TYPE_VIS fpos; +template class _LIBCPP_TYPE_VIS_ONLY fpos; typedef fpos streampos; typedef fpos wstreampos; #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS @@ -185,7 +185,7 @@ typedef long long streamoff; // for char_traits in template class _Traits = char_traits<_CharT>, class _Allocator = allocator<_CharT> > - class _LIBCPP_TYPE_VIS basic_string; + class _LIBCPP_TYPE_VIS_ONLY basic_string; typedef basic_string, allocator > string; typedef basic_string, allocator > wstring; diff --git a/libcxx/include/istream b/libcxx/include/istream index f3e74c382e6b..7284fc1fee06 100644 --- a/libcxx/include/istream +++ b/libcxx/include/istream @@ -164,7 +164,7 @@ template _LIBCPP_BEGIN_NAMESPACE_STD template -class _LIBCPP_TYPE_VIS basic_istream +class _LIBCPP_TYPE_VIS_ONLY basic_istream : virtual public basic_ios<_CharT, _Traits> { streamsize __gc_; @@ -194,7 +194,7 @@ protected: public: // 27.7.1.1.3 Prefix/suffix: - class _LIBCPP_TYPE_VIS sentry; + class _LIBCPP_TYPE_VIS_ONLY sentry; // 27.7.1.2 Formatted input: basic_istream& operator>>(basic_istream& (*__pf)(basic_istream&)); @@ -244,7 +244,7 @@ public: }; template -class _LIBCPP_TYPE_VIS basic_istream<_CharT, _Traits>::sentry +class _LIBCPP_TYPE_VIS_ONLY basic_istream<_CharT, _Traits>::sentry { bool __ok_; @@ -1451,7 +1451,7 @@ operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x) #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES template -class _LIBCPP_TYPE_VIS basic_iostream +class _LIBCPP_TYPE_VIS_ONLY basic_iostream : public basic_istream<_CharT, _Traits>, public basic_ostream<_CharT, _Traits> { @@ -1702,9 +1702,9 @@ operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Size>& __x) return __is; } -_LIBCPP_EXTERN_TEMPLATE(class basic_istream) -_LIBCPP_EXTERN_TEMPLATE(class basic_istream) -_LIBCPP_EXTERN_TEMPLATE(class basic_iostream) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_istream) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_istream) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_iostream) _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/include/iterator b/libcxx/include/iterator index 858510d15625..87d6d1d21446 100644 --- a/libcxx/include/iterator +++ b/libcxx/include/iterator @@ -333,11 +333,11 @@ template T* end(T (&array)[N]); _LIBCPP_BEGIN_NAMESPACE_STD -struct _LIBCPP_TYPE_VIS input_iterator_tag {}; -struct _LIBCPP_TYPE_VIS output_iterator_tag {}; -struct _LIBCPP_TYPE_VIS forward_iterator_tag : public input_iterator_tag {}; -struct _LIBCPP_TYPE_VIS bidirectional_iterator_tag : public forward_iterator_tag {}; -struct _LIBCPP_TYPE_VIS random_access_iterator_tag : public bidirectional_iterator_tag {}; +struct _LIBCPP_TYPE_VIS_ONLY input_iterator_tag {}; +struct _LIBCPP_TYPE_VIS_ONLY output_iterator_tag {}; +struct _LIBCPP_TYPE_VIS_ONLY forward_iterator_tag : public input_iterator_tag {}; +struct _LIBCPP_TYPE_VIS_ONLY bidirectional_iterator_tag : public forward_iterator_tag {}; +struct _LIBCPP_TYPE_VIS_ONLY random_access_iterator_tag : public bidirectional_iterator_tag {}; template struct __has_iterator_category @@ -380,11 +380,11 @@ struct __iterator_traits<_Iter, true> // the client expects instead of failing at compile time. template -struct _LIBCPP_TYPE_VIS iterator_traits +struct _LIBCPP_TYPE_VIS_ONLY iterator_traits : __iterator_traits<_Iter, __has_iterator_category<_Iter>::value> {}; template -struct _LIBCPP_TYPE_VIS iterator_traits<_Tp*> +struct _LIBCPP_TYPE_VIS_ONLY iterator_traits<_Tp*> { typedef ptrdiff_t difference_type; typedef typename remove_const<_Tp>::type value_type; @@ -415,7 +415,7 @@ struct __is_random_access_iterator : public __has_iterator_category_convertible_ template -struct _LIBCPP_TYPE_VIS iterator +struct _LIBCPP_TYPE_VIS_ONLY iterator { typedef _Tp value_type; typedef _Distance difference_type; @@ -512,7 +512,7 @@ prev(_BidiretionalIter __x, } template -class _LIBCPP_TYPE_VIS reverse_iterator +class _LIBCPP_TYPE_VIS_ONLY reverse_iterator : public iterator::iterator_category, typename iterator_traits<_Iter>::value_type, typename iterator_traits<_Iter>::difference_type, @@ -619,7 +619,7 @@ operator+(typename reverse_iterator<_Iter>::difference_type __n, const reverse_i } template -class _LIBCPP_TYPE_VIS back_insert_iterator +class _LIBCPP_TYPE_VIS_ONLY back_insert_iterator : public iterator -class _LIBCPP_TYPE_VIS front_insert_iterator +class _LIBCPP_TYPE_VIS_ONLY front_insert_iterator : public iterator -class _LIBCPP_TYPE_VIS insert_iterator +class _LIBCPP_TYPE_VIS_ONLY insert_iterator : public iterator, class _Distance = ptrdiff_t> -class _LIBCPP_TYPE_VIS istream_iterator +class _LIBCPP_TYPE_VIS_ONLY istream_iterator : public iterator { public: @@ -760,7 +760,7 @@ public: }; template > -class _LIBCPP_TYPE_VIS ostream_iterator +class _LIBCPP_TYPE_VIS_ONLY ostream_iterator : public iterator { public: @@ -789,7 +789,7 @@ public: }; template -class _LIBCPP_TYPE_VIS istreambuf_iterator +class _LIBCPP_TYPE_VIS_ONLY istreambuf_iterator : public iterator @@ -860,7 +860,7 @@ bool operator!=(const istreambuf_iterator<_CharT,_Traits>& __a, {return !__a.equal(__b);} template -class _LIBCPP_TYPE_VIS ostreambuf_iterator +class _LIBCPP_TYPE_VIS_ONLY ostreambuf_iterator : public iterator { public: @@ -901,7 +901,7 @@ public: }; template -class _LIBCPP_TYPE_VIS move_iterator +class _LIBCPP_TYPE_VIS_ONLY move_iterator { private: _Iter __i; diff --git a/libcxx/include/limits b/libcxx/include/limits index c995ef5985bd..3fc0e6f3642b 100644 --- a/libcxx/include/limits +++ b/libcxx/include/limits @@ -433,7 +433,7 @@ protected: }; template -class _LIBCPP_TYPE_VIS numeric_limits +class _LIBCPP_TYPE_VIS_ONLY numeric_limits : private __libcpp_numeric_limits::type> { typedef __libcpp_numeric_limits::type> __base; @@ -526,7 +526,7 @@ template _LIBCPP_CONSTEXPR const float_round_style numeric_limits<_Tp>::round_style; template -class _LIBCPP_TYPE_VIS numeric_limits +class _LIBCPP_TYPE_VIS_ONLY numeric_limits : private numeric_limits<_Tp> { typedef numeric_limits<_Tp> __base; @@ -619,7 +619,7 @@ template _LIBCPP_CONSTEXPR const float_round_style numeric_limits::round_style; template -class _LIBCPP_TYPE_VIS numeric_limits +class _LIBCPP_TYPE_VIS_ONLY numeric_limits : private numeric_limits<_Tp> { typedef numeric_limits<_Tp> __base; @@ -712,7 +712,7 @@ template _LIBCPP_CONSTEXPR const float_round_style numeric_limits::round_style; template -class _LIBCPP_TYPE_VIS numeric_limits +class _LIBCPP_TYPE_VIS_ONLY numeric_limits : private numeric_limits<_Tp> { typedef numeric_limits<_Tp> __base; diff --git a/libcxx/include/list b/libcxx/include/list index 4b1272a8ea41..92b7724cc92a 100644 --- a/libcxx/include/list +++ b/libcxx/include/list @@ -226,12 +226,12 @@ struct __list_node _Tp __value_; }; -template class _LIBCPP_TYPE_VIS list; +template class _LIBCPP_TYPE_VIS_ONLY list; template class __list_imp; -template class _LIBCPP_TYPE_VIS __list_const_iterator; +template class _LIBCPP_TYPE_VIS_ONLY __list_const_iterator; template -class _LIBCPP_TYPE_VIS __list_iterator +class _LIBCPP_TYPE_VIS_ONLY __list_iterator { typedef typename pointer_traits<_VoidPtr>::template #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES @@ -364,7 +364,7 @@ public: }; template -class _LIBCPP_TYPE_VIS __list_const_iterator +class _LIBCPP_TYPE_VIS_ONLY __list_const_iterator { typedef typename pointer_traits<_VoidPtr>::template #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES @@ -806,7 +806,7 @@ __list_imp<_Tp, _Alloc>::swap(__list_imp& __c) } template > -class _LIBCPP_TYPE_VIS list +class _LIBCPP_TYPE_VIS_ONLY list : private __list_imp<_Tp, _Alloc> { typedef __list_imp<_Tp, _Alloc> base; diff --git a/libcxx/include/locale b/libcxx/include/locale index 00a275f919eb..20dc16e14a5e 100644 --- a/libcxx/include/locale +++ b/libcxx/include/locale @@ -211,7 +211,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD #else # define _LIBCPP_GET_C_LOCALE __cloc() // Get the C locale object - locale_t __cloc(); + _LIBCPP_FUNC_VIS locale_t __cloc(); #define __cloc_defined #endif @@ -528,7 +528,7 @@ __scan_keyword(_InputIterator& __b, _InputIterator __e, return __kb; } -struct __num_get_base +struct _LIBCPP_TYPE_VIS __num_get_base { static const int __num_get_buf_sz = 40; @@ -536,6 +536,7 @@ struct __num_get_base static const char __src[33]; }; +_LIBCPP_FUNC_VIS void __check_grouping(const string& __grouping, unsigned* __g, unsigned* __g_end, ios_base::iostate& __err); @@ -686,11 +687,11 @@ __num_get<_CharT>::__stage2_float_loop(_CharT __ct, bool& __in_units, char& __ex return 0; } -_LIBCPP_EXTERN_TEMPLATE(struct __num_get) -_LIBCPP_EXTERN_TEMPLATE(struct __num_get) +_LIBCPP_EXTERN_TEMPLATE(struct _LIBCPP_TYPE_VIS __num_get) +_LIBCPP_EXTERN_TEMPLATE(struct _LIBCPP_TYPE_VIS __num_get) template > -class _LIBCPP_TYPE_VIS num_get +class _LIBCPP_TYPE_VIS_ONLY num_get : public locale::facet, private __num_get<_CharT> { @@ -1435,10 +1436,10 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e, return __b; } -_LIBCPP_EXTERN_TEMPLATE(class num_get) -_LIBCPP_EXTERN_TEMPLATE(class num_get) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS num_get) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS num_get) -struct __num_put_base +struct _LIBCPP_TYPE_VIS __num_put_base { protected: static void __format_int(char* __fmt, const char* __len, bool __signd, @@ -1585,11 +1586,11 @@ __num_put<_CharT>::__widen_and_group_float(char* __nb, char* __np, char* __ne, __op = __ob + (__np - __nb); } -_LIBCPP_EXTERN_TEMPLATE(struct __num_put) -_LIBCPP_EXTERN_TEMPLATE(struct __num_put) +_LIBCPP_EXTERN_TEMPLATE(struct _LIBCPP_TYPE_VIS __num_put) +_LIBCPP_EXTERN_TEMPLATE(struct _LIBCPP_TYPE_VIS __num_put) template > -class _LIBCPP_TYPE_VIS num_put +class _LIBCPP_TYPE_VIS_ONLY num_put : public locale::facet, private __num_put<_CharT> { @@ -2065,8 +2066,8 @@ num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob, return __pad_and_output(__s, __o, __op, __oe, __iob, __fl); } -_LIBCPP_EXTERN_TEMPLATE(class num_put) -_LIBCPP_EXTERN_TEMPLATE(class num_put) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS num_put) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS num_put) template _LIBCPP_HIDDEN @@ -2108,7 +2109,7 @@ public: }; template -class __time_get_c_storage // purposefully not decorated +class _LIBCPP_TYPE_VIS __time_get_c_storage { protected: typedef basic_string<_CharT> string_type; @@ -2123,7 +2124,7 @@ protected: }; template > -class _LIBCPP_TYPE_VIS time_get +class _LIBCPP_TYPE_VIS_ONLY time_get : public locale::facet, public time_base, private __time_get_c_storage<_CharT> @@ -2732,10 +2733,10 @@ time_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e, return __b; } -_LIBCPP_EXTERN_TEMPLATE(class time_get) -_LIBCPP_EXTERN_TEMPLATE(class time_get) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS time_get) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS time_get) -class __time_get +class _LIBCPP_TYPE_VIS __time_get { protected: locale_t __loc_; @@ -2746,7 +2747,7 @@ protected: }; template -class __time_get_storage +class _LIBCPP_TYPE_VIS __time_get_storage : public __time_get { protected: @@ -2773,7 +2774,7 @@ private: }; template > -class _LIBCPP_TYPE_VIS time_get_byname +class _LIBCPP_TYPE_VIS_ONLY time_get_byname : public time_get<_CharT, _InputIterator>, private __time_get_storage<_CharT> { @@ -2815,10 +2816,10 @@ private: virtual const string_type& __X() const {return this->__X_;} }; -_LIBCPP_EXTERN_TEMPLATE(class time_get_byname) -_LIBCPP_EXTERN_TEMPLATE(class time_get_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS time_get_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS time_get_byname) -class __time_put +class _LIBCPP_TYPE_VIS __time_put { locale_t __loc_; protected: @@ -2833,7 +2834,7 @@ protected: }; template > -class _LIBCPP_TYPE_VIS time_put +class _LIBCPP_TYPE_VIS_ONLY time_put : public locale::facet, private __time_put { @@ -2928,11 +2929,11 @@ time_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base&, return _VSTD::copy(__nb, __ne, __s); } -_LIBCPP_EXTERN_TEMPLATE(class time_put) -_LIBCPP_EXTERN_TEMPLATE(class time_put) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS time_put) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS time_put) template > -class _LIBCPP_TYPE_VIS time_put_byname +class _LIBCPP_TYPE_VIS_ONLY time_put_byname : public time_put<_CharT, _OutputIterator> { public: @@ -2949,8 +2950,8 @@ protected: ~time_put_byname() {} }; -_LIBCPP_EXTERN_TEMPLATE(class time_put_byname) -_LIBCPP_EXTERN_TEMPLATE(class time_put_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS time_put_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS time_put_byname) // money_base @@ -2966,7 +2967,7 @@ public: // moneypunct template -class _LIBCPP_TYPE_VIS moneypunct +class _LIBCPP_TYPE_VIS_ONLY moneypunct : public locale::facet, public money_base { @@ -3016,15 +3017,15 @@ template const bool moneypunct<_CharT, _International>::intl; -_LIBCPP_EXTERN_TEMPLATE(class moneypunct) -_LIBCPP_EXTERN_TEMPLATE(class moneypunct) -_LIBCPP_EXTERN_TEMPLATE(class moneypunct) -_LIBCPP_EXTERN_TEMPLATE(class moneypunct) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS moneypunct) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS moneypunct) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS moneypunct) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS moneypunct) // moneypunct_byname template -class _LIBCPP_TYPE_VIS moneypunct_byname +class _LIBCPP_TYPE_VIS_ONLY moneypunct_byname : public moneypunct<_CharT, _International> { public: @@ -3073,10 +3074,10 @@ template<> void moneypunct_byname::init(const char*); template<> void moneypunct_byname::init(const char*); template<> void moneypunct_byname::init(const char*); -_LIBCPP_EXTERN_TEMPLATE(class moneypunct_byname) -_LIBCPP_EXTERN_TEMPLATE(class moneypunct_byname) -_LIBCPP_EXTERN_TEMPLATE(class moneypunct_byname) -_LIBCPP_EXTERN_TEMPLATE(class moneypunct_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS moneypunct_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS moneypunct_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS moneypunct_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS moneypunct_byname) // money_get @@ -3132,11 +3133,11 @@ __money_get<_CharT>::__gather_info(bool __intl, const locale& __loc, } } -_LIBCPP_EXTERN_TEMPLATE(class __money_get) -_LIBCPP_EXTERN_TEMPLATE(class __money_get) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS __money_get) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS __money_get) template > -class _LIBCPP_TYPE_VIS money_get +class _LIBCPP_TYPE_VIS_ONLY money_get : public locale::facet, private __money_get<_CharT> { @@ -3190,7 +3191,7 @@ template locale::id money_get<_CharT, _InputIterator>::id; -void __do_nothing(void*); +_LIBCPP_FUNC_VIS void __do_nothing(void*); template _LIBCPP_HIDDEN @@ -3513,8 +3514,8 @@ money_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e, return __b; } -_LIBCPP_EXTERN_TEMPLATE(class money_get) -_LIBCPP_EXTERN_TEMPLATE(class money_get) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS money_get) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS money_get) // money_put @@ -3688,11 +3689,11 @@ __money_put<_CharT>::__format(char_type* __mb, char_type*& __mi, char_type*& __m __mi = __mb; } -_LIBCPP_EXTERN_TEMPLATE(class __money_put) -_LIBCPP_EXTERN_TEMPLATE(class __money_put) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS __money_put) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS __money_put) template > -class _LIBCPP_TYPE_VIS money_put +class _LIBCPP_TYPE_VIS_ONLY money_put : public locale::facet, private __money_put<_CharT> { @@ -3845,8 +3846,8 @@ money_put<_CharT, _OutputIterator>::do_put(iter_type __s, bool __intl, return __pad_and_output(__s, __mb, __mi, __me, __iob, __fl); } -_LIBCPP_EXTERN_TEMPLATE(class money_put) -_LIBCPP_EXTERN_TEMPLATE(class money_put) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS money_put) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS money_put) // messages @@ -3859,7 +3860,7 @@ public: }; template -class _LIBCPP_TYPE_VIS messages +class _LIBCPP_TYPE_VIS_ONLY messages : public locale::facet, public messages_base { @@ -3955,11 +3956,11 @@ messages<_CharT>::do_close(catalog __c) const #endif // !_WIN32 } -_LIBCPP_EXTERN_TEMPLATE(class messages) -_LIBCPP_EXTERN_TEMPLATE(class messages) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS messages) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS messages) template -class _LIBCPP_TYPE_VIS messages_byname +class _LIBCPP_TYPE_VIS_ONLY messages_byname : public messages<_CharT> { public: @@ -3979,13 +3980,13 @@ protected: ~messages_byname() {} }; -_LIBCPP_EXTERN_TEMPLATE(class messages_byname) -_LIBCPP_EXTERN_TEMPLATE(class messages_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS messages_byname) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS messages_byname) template, class _Byte_alloc = allocator > -class _LIBCPP_TYPE_VIS wstring_convert +class _LIBCPP_TYPE_VIS_ONLY wstring_convert { public: typedef basic_string, _Byte_alloc> byte_string; @@ -4238,7 +4239,7 @@ wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>:: } template > -class _LIBCPP_TYPE_VIS wbuffer_convert +class _LIBCPP_TYPE_VIS_ONLY wbuffer_convert : public basic_streambuf<_Elem, _Tr> { public: diff --git a/libcxx/include/map b/libcxx/include/map index 953743a6c740..3a077587c025 100644 --- a/libcxx/include/map +++ b/libcxx/include/map @@ -496,7 +496,7 @@ template template class __map_const_iterator; template -class _LIBCPP_TYPE_VIS __map_iterator +class _LIBCPP_TYPE_VIS_ONLY __map_iterator { _TreeIterator __i_; @@ -555,13 +555,13 @@ public: bool operator!=(const __map_iterator& __x, const __map_iterator& __y) {return __x.__i_ != __y.__i_;} - template friend class _LIBCPP_TYPE_VIS map; - template friend class _LIBCPP_TYPE_VIS multimap; - template friend class _LIBCPP_TYPE_VIS __map_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY map; + template friend class _LIBCPP_TYPE_VIS_ONLY multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator; }; template -class _LIBCPP_TYPE_VIS __map_const_iterator +class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator { _TreeIterator __i_; @@ -624,14 +624,14 @@ public: bool operator!=(const __map_const_iterator& __x, const __map_const_iterator& __y) {return __x.__i_ != __y.__i_;} - template friend class _LIBCPP_TYPE_VIS map; - template friend class _LIBCPP_TYPE_VIS multimap; - template friend class _LIBCPP_TYPE_VIS __tree_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY map; + template friend class _LIBCPP_TYPE_VIS_ONLY multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator; }; template , class _Allocator = allocator > > -class _LIBCPP_TYPE_VIS map +class _LIBCPP_TYPE_VIS_ONLY map { public: // types: @@ -644,7 +644,7 @@ public: typedef value_type& reference; typedef const value_type& const_reference; - class _LIBCPP_TYPE_VIS value_compare + class _LIBCPP_TYPE_VIS_ONLY value_compare : public binary_function { friend class map; @@ -1346,7 +1346,7 @@ swap(map<_Key, _Tp, _Compare, _Allocator>& __x, template , class _Allocator = allocator > > -class _LIBCPP_TYPE_VIS multimap +class _LIBCPP_TYPE_VIS_ONLY multimap { public: // types: @@ -1359,7 +1359,7 @@ public: typedef value_type& reference; typedef const value_type& const_reference; - class _LIBCPP_TYPE_VIS value_compare + class _LIBCPP_TYPE_VIS_ONLY value_compare : public binary_function { friend class multimap; diff --git a/libcxx/include/memory b/libcxx/include/memory index 8e14a640d15a..49a53c32dc43 100644 --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -623,7 +623,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template class allocator; template <> -class _LIBCPP_TYPE_VIS allocator +class _LIBCPP_TYPE_VIS_ONLY allocator { public: typedef void* pointer; @@ -634,7 +634,7 @@ public: }; template <> -class _LIBCPP_TYPE_VIS allocator +class _LIBCPP_TYPE_VIS_ONLY allocator { public: typedef const void* pointer; @@ -869,7 +869,7 @@ struct __pointer_traits_rebind<_Sp<_Tp, _A0, _A1, _A2>, _Up, false> #endif // _LIBCPP_HAS_NO_VARIADICS template -struct _LIBCPP_TYPE_VIS pointer_traits +struct _LIBCPP_TYPE_VIS_ONLY pointer_traits { typedef _Ptr pointer; typedef typename __pointer_traits_element_type::type element_type; @@ -892,7 +892,7 @@ public: }; template -struct _LIBCPP_TYPE_VIS pointer_traits<_Tp*> +struct _LIBCPP_TYPE_VIS_ONLY pointer_traits<_Tp*> { typedef _Tp* pointer; typedef _Tp element_type; @@ -1399,7 +1399,7 @@ struct __alloc_traits_difference_type<_Alloc, _Ptr, true> }; template -struct _LIBCPP_TYPE_VIS allocator_traits +struct _LIBCPP_TYPE_VIS_ONLY allocator_traits { typedef _Alloc allocator_type; typedef typename allocator_type::value_type value_type; @@ -1605,7 +1605,7 @@ private: // allocator template -class _LIBCPP_TYPE_VIS allocator +class _LIBCPP_TYPE_VIS_ONLY allocator { public: typedef size_t size_type; @@ -1697,7 +1697,7 @@ public: }; template -class _LIBCPP_TYPE_VIS allocator +class _LIBCPP_TYPE_VIS_ONLY allocator { public: typedef size_t size_type; @@ -1795,7 +1795,7 @@ inline _LIBCPP_INLINE_VISIBILITY bool operator!=(const allocator<_Tp>&, const allocator<_Up>&) _NOEXCEPT {return false;} template -class _LIBCPP_TYPE_VIS raw_storage_iterator +class _LIBCPP_TYPE_VIS_ONLY raw_storage_iterator : public iterator -class _LIBCPP_TYPE_VIS auto_ptr +class _LIBCPP_TYPE_VIS_ONLY auto_ptr { private: _Tp* __ptr_; @@ -1892,7 +1892,7 @@ public: }; template <> -class _LIBCPP_TYPE_VIS auto_ptr +class _LIBCPP_TYPE_VIS_ONLY auto_ptr { public: typedef void element_type; @@ -2428,7 +2428,7 @@ struct __same_or_less_cv_qualified<_Ptr1, _Ptr2, true> // default_delete template -struct _LIBCPP_TYPE_VIS default_delete +struct _LIBCPP_TYPE_VIS_ONLY default_delete { #ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR default_delete() _NOEXCEPT = default; @@ -2447,7 +2447,7 @@ struct _LIBCPP_TYPE_VIS default_delete }; template -struct _LIBCPP_TYPE_VIS default_delete<_Tp[]> +struct _LIBCPP_TYPE_VIS_ONLY default_delete<_Tp[]> { public: #ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS @@ -2470,7 +2470,7 @@ public: }; template > -class _LIBCPP_TYPE_VIS unique_ptr +class _LIBCPP_TYPE_VIS_ONLY unique_ptr { public: typedef _Tp element_type; @@ -2649,7 +2649,7 @@ public: }; template -class _LIBCPP_TYPE_VIS unique_ptr<_Tp[], _Dp> +class _LIBCPP_TYPE_VIS_ONLY unique_ptr<_Tp[], _Dp> { public: typedef _Tp element_type; @@ -3404,7 +3404,7 @@ struct __scalar_hash<_Tp, 4> }; template -struct _LIBCPP_TYPE_VIS hash<_Tp*> +struct _LIBCPP_TYPE_VIS_ONLY hash<_Tp*> : public unary_function<_Tp*, size_t> { _LIBCPP_INLINE_VISIBILITY @@ -3421,7 +3421,7 @@ struct _LIBCPP_TYPE_VIS hash<_Tp*> }; template -struct _LIBCPP_TYPE_VIS hash > +struct _LIBCPP_TYPE_VIS_ONLY hash > { typedef unique_ptr<_Tp, _Dp> argument_type; typedef size_t result_type; @@ -3594,9 +3594,9 @@ public: virtual const char* what() const _NOEXCEPT; }; -template class _LIBCPP_TYPE_VIS weak_ptr; +template class _LIBCPP_TYPE_VIS_ONLY weak_ptr; -class __shared_count +class _LIBCPP_TYPE_VIS __shared_count { __shared_count(const __shared_count&); __shared_count& operator=(const __shared_count&); @@ -3618,7 +3618,7 @@ public: long use_count() const _NOEXCEPT {return __shared_owners_ + 1;} }; -class __shared_weak_count +class _LIBCPP_TYPE_VIS __shared_weak_count : private __shared_count { long __shared_weak_owners_; @@ -3763,10 +3763,10 @@ __shared_ptr_emplace<_Tp, _Alloc>::__on_zero_shared_weak() _NOEXCEPT __a.deallocate(this, 1); } -template class _LIBCPP_TYPE_VIS enable_shared_from_this; +template class _LIBCPP_TYPE_VIS_ONLY enable_shared_from_this; template -class _LIBCPP_TYPE_VIS shared_ptr +class _LIBCPP_TYPE_VIS_ONLY shared_ptr { public: typedef _Tp element_type; @@ -4035,8 +4035,8 @@ private: _LIBCPP_INLINE_VISIBILITY void __enable_weak_this(const void*) _NOEXCEPT {} - template friend class _LIBCPP_TYPE_VIS shared_ptr; - template friend class _LIBCPP_TYPE_VIS weak_ptr; + template friend class _LIBCPP_TYPE_VIS_ONLY shared_ptr; + template friend class _LIBCPP_TYPE_VIS_ONLY weak_ptr; }; template @@ -4932,7 +4932,7 @@ get_deleter(const shared_ptr<_Tp>& __p) _NOEXCEPT #endif // _LIBCPP_NO_RTTI template -class _LIBCPP_TYPE_VIS weak_ptr +class _LIBCPP_TYPE_VIS_ONLY weak_ptr { public: typedef _Tp element_type; @@ -5007,8 +5007,8 @@ public: bool owner_before(const weak_ptr<_Up>& __r) const {return __cntrl_ < __r.__cntrl_;} - template friend class _LIBCPP_TYPE_VIS weak_ptr; - template friend class _LIBCPP_TYPE_VIS shared_ptr; + template friend class _LIBCPP_TYPE_VIS_ONLY weak_ptr; + template friend class _LIBCPP_TYPE_VIS_ONLY shared_ptr; }; template @@ -5208,7 +5208,7 @@ weak_ptr<_Tp>::lock() const _NOEXCEPT template struct owner_less; template -struct _LIBCPP_TYPE_VIS owner_less > +struct _LIBCPP_TYPE_VIS_ONLY owner_less > : binary_function, shared_ptr<_Tp>, bool> { typedef bool result_type; @@ -5224,7 +5224,7 @@ struct _LIBCPP_TYPE_VIS owner_less > }; template -struct _LIBCPP_TYPE_VIS owner_less > +struct _LIBCPP_TYPE_VIS_ONLY owner_less > : binary_function, weak_ptr<_Tp>, bool> { typedef bool result_type; @@ -5240,7 +5240,7 @@ struct _LIBCPP_TYPE_VIS owner_less > }; template -class _LIBCPP_TYPE_VIS enable_shared_from_this +class _LIBCPP_TYPE_VIS_ONLY enable_shared_from_this { mutable weak_ptr<_Tp> __weak_this_; protected: @@ -5265,7 +5265,7 @@ public: }; template -struct _LIBCPP_TYPE_VIS hash > +struct _LIBCPP_TYPE_VIS_ONLY hash > { typedef shared_ptr<_Tp> argument_type; typedef size_t result_type; @@ -5283,7 +5283,7 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p); #if __has_feature(cxx_atomic) -class __sp_mut +class _LIBCPP_TYPE_VIS __sp_mut { void* __lx; public: @@ -5427,11 +5427,11 @@ struct _LIBCPP_TYPE_VIS pointer_safety operator int() const {return __v_;} }; -void declare_reachable(void* __p); -void declare_no_pointers(char* __p, size_t __n); -void undeclare_no_pointers(char* __p, size_t __n); -pointer_safety get_pointer_safety() _NOEXCEPT; -void* __undeclare_reachable(void* __p); +_LIBCPP_FUNC_VIS void declare_reachable(void* __p); +_LIBCPP_FUNC_VIS void declare_no_pointers(char* __p, size_t __n); +_LIBCPP_FUNC_VIS void undeclare_no_pointers(char* __p, size_t __n); +_LIBCPP_FUNC_VIS pointer_safety get_pointer_safety() _NOEXCEPT; +_LIBCPP_FUNC_VIS void* __undeclare_reachable(void* __p); template inline _LIBCPP_INLINE_VISIBILITY @@ -5441,7 +5441,7 @@ undeclare_reachable(_Tp* __p) return static_cast<_Tp*>(__undeclare_reachable(__p)); } -void* align(size_t __align, size_t __sz, void*& __ptr, size_t& __space); +_LIBCPP_FUNC_VIS void* align(size_t __align, size_t __sz, void*& __ptr, size_t& __space); _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/include/mutex b/libcxx/include/mutex index e2b5d6bfd973..e0c02adb59ed 100644 --- a/libcxx/include/mutex +++ b/libcxx/include/mutex @@ -441,7 +441,7 @@ void call_once(once_flag&, _Callable); #endif // _LIBCPP_HAS_NO_VARIADICS -struct _LIBCPP_TYPE_VIS once_flag +struct _LIBCPP_TYPE_VIS_ONLY once_flag { _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR @@ -527,7 +527,7 @@ __call_once_proxy(void* __vp) (*__p)(); } -void __call_once(volatile unsigned long&, void*, void(*)(void*)); +_LIBCPP_FUNC_VIS void __call_once(volatile unsigned long&, void*, void(*)(void*)); #ifndef _LIBCPP_HAS_NO_VARIADICS diff --git a/libcxx/include/new b/libcxx/include/new index 1e85798b5c46..94a284958bbe 100644 --- a/libcxx/include/new +++ b/libcxx/include/new @@ -81,7 +81,7 @@ public: virtual const char* what() const _NOEXCEPT; }; -void __throw_bad_alloc(); // not in C++ spec +_LIBCPP_FUNC_VIS void __throw_bad_alloc(); // not in C++ spec struct _LIBCPP_TYPE_VIS nothrow_t {}; extern _LIBCPP_FUNC_VIS const nothrow_t nothrow; @@ -91,23 +91,31 @@ _LIBCPP_FUNC_VIS new_handler get_new_handler() _NOEXCEPT; } // std -_LIBCPP_FUNC_VIS void* operator new(std::size_t __sz) -#if !__has_feature(cxx_noexcept) - throw(std::bad_alloc) +#if defined(_WIN32) && !defined(cxx_EXPORTS) +# define _LIBCPP_NEW_DELETE_VIS _LIBCPP_FUNC_VIS_ONLY +#else +# define _LIBCPP_NEW_DELETE_VIS _LIBCPP_FUNC_VIS #endif -; -_LIBCPP_FUNC_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS; -_LIBCPP_FUNC_VIS void operator delete(void* __p) _NOEXCEPT; -_LIBCPP_FUNC_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT; -_LIBCPP_FUNC_VIS void* operator new[](std::size_t __sz) +_LIBCPP_NEW_DELETE_VIS void* operator new(std::size_t __sz) #if !__has_feature(cxx_noexcept) throw(std::bad_alloc) #endif ; -_LIBCPP_FUNC_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS; -_LIBCPP_FUNC_VIS void operator delete[](void* __p) _NOEXCEPT; -_LIBCPP_FUNC_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT; +_LIBCPP_NEW_DELETE_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS; +_LIBCPP_NEW_DELETE_VIS void operator delete(void* __p) _NOEXCEPT; +_LIBCPP_NEW_DELETE_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT; + +_LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz) +#if !__has_feature(cxx_noexcept) + throw(std::bad_alloc) +#endif +; +_LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS; +_LIBCPP_NEW_DELETE_VIS void operator delete[](void* __p) _NOEXCEPT; +_LIBCPP_NEW_DELETE_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT; + +#undef _LIBCPP_NEW_DELETE_VIS _LIBCPP_INLINE_VISIBILITY inline void* operator new (std::size_t, void* __p) _NOEXCEPT {return __p;} _LIBCPP_INLINE_VISIBILITY inline void* operator new[](std::size_t, void* __p) _NOEXCEPT {return __p;} diff --git a/libcxx/include/ostream b/libcxx/include/ostream index eac9c8f02f15..ce710ac304bc 100644 --- a/libcxx/include/ostream +++ b/libcxx/include/ostream @@ -140,7 +140,7 @@ template _LIBCPP_BEGIN_NAMESPACE_STD template -class _LIBCPP_TYPE_VIS basic_ostream +class _LIBCPP_TYPE_VIS_ONLY basic_ostream : virtual public basic_ios<_CharT, _Traits> { public: @@ -169,7 +169,7 @@ protected: public: // 27.7.2.4 Prefix/suffix: - class _LIBCPP_TYPE_VIS sentry; + class _LIBCPP_TYPE_VIS_ONLY sentry; // 27.7.2.6 Formatted output: basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&)); @@ -207,7 +207,7 @@ protected: }; template -class _LIBCPP_TYPE_VIS basic_ostream<_CharT, _Traits>::sentry +class _LIBCPP_TYPE_VIS_ONLY basic_ostream<_CharT, _Traits>::sentry { bool __ok_; basic_ostream<_CharT, _Traits>& __os_; @@ -1278,8 +1278,8 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x) use_facet >(__os.getloc()).widen('1')); } -_LIBCPP_EXTERN_TEMPLATE(class basic_ostream) -_LIBCPP_EXTERN_TEMPLATE(class basic_ostream) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_ostream) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_ostream) _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/include/queue b/libcxx/include/queue index 8d1a9dfc948b..bdfd70603553 100644 --- a/libcxx/include/queue +++ b/libcxx/include/queue @@ -177,7 +177,7 @@ template _LIBCPP_BEGIN_NAMESPACE_STD -template class _LIBCPP_TYPE_VIS queue; +template class _LIBCPP_TYPE_VIS_ONLY queue; template _LIBCPP_INLINE_VISIBILITY @@ -190,7 +190,7 @@ bool operator< (const queue<_Tp, _Container>& __x,const queue<_Tp, _Container>& __y); template > -class _LIBCPP_TYPE_VIS queue +class _LIBCPP_TYPE_VIS_ONLY queue { public: typedef _Container container_type; @@ -376,14 +376,14 @@ swap(queue<_Tp, _Container>& __x, queue<_Tp, _Container>& __y) } template -struct _LIBCPP_TYPE_VIS uses_allocator, _Alloc> +struct _LIBCPP_TYPE_VIS_ONLY uses_allocator, _Alloc> : public uses_allocator<_Container, _Alloc> { }; template , class _Compare = less > -class _LIBCPP_TYPE_VIS priority_queue +class _LIBCPP_TYPE_VIS_ONLY priority_queue { public: typedef _Container container_type; @@ -707,7 +707,7 @@ swap(priority_queue<_Tp, _Container, _Compare>& __x, } template -struct _LIBCPP_TYPE_VIS uses_allocator, _Alloc> +struct _LIBCPP_TYPE_VIS_ONLY uses_allocator, _Alloc> : public uses_allocator<_Container, _Alloc> { }; diff --git a/libcxx/include/random b/libcxx/include/random index 2e7a4854c198..7fc21678a3aa 100644 --- a/libcxx/include/random +++ b/libcxx/include/random @@ -1813,7 +1813,7 @@ struct __lce_ta<__a, __c, __m, (unsigned short)(~0), __b> }; template -class _LIBCPP_TYPE_VIS linear_congruential_engine; +class _LIBCPP_TYPE_VIS_ONLY linear_congruential_engine; template @@ -1829,7 +1829,7 @@ operator>>(basic_istream<_CharT, _Traits>& __is, linear_congruential_engine<_Up, _Ap, _Cp, _Np>& __x); template -class _LIBCPP_TYPE_VIS linear_congruential_engine +class _LIBCPP_TYPE_VIS_ONLY linear_congruential_engine { public: // types @@ -2011,7 +2011,7 @@ typedef minstd_rand default_random_engine; template -class _LIBCPP_TYPE_VIS mersenne_twister_engine; +class _LIBCPP_TYPE_VIS_ONLY mersenne_twister_engine; template >(basic_istream<_CharT, _Traits>& __is, template -class _LIBCPP_TYPE_VIS mersenne_twister_engine +class _LIBCPP_TYPE_VIS_ONLY mersenne_twister_engine { public: // types @@ -2499,7 +2499,7 @@ typedef mersenne_twister_engine -class _LIBCPP_TYPE_VIS subtract_with_carry_engine; +class _LIBCPP_TYPE_VIS_ONLY subtract_with_carry_engine; template bool @@ -2527,7 +2527,7 @@ operator>>(basic_istream<_CharT, _Traits>& __is, subtract_with_carry_engine<_UI, _Wp, _Sp, _Rp>& __x); template -class _LIBCPP_TYPE_VIS subtract_with_carry_engine +class _LIBCPP_TYPE_VIS_ONLY subtract_with_carry_engine { public: // types @@ -2810,7 +2810,7 @@ typedef subtract_with_carry_engine ranlux48_base; // discard_block_engine template -class _LIBCPP_TYPE_VIS discard_block_engine +class _LIBCPP_TYPE_VIS_ONLY discard_block_engine { _Engine __e_; int __n_; @@ -2983,7 +2983,7 @@ typedef discard_block_engine ranlux48; // independent_bits_engine template -class _LIBCPP_TYPE_VIS independent_bits_engine +class _LIBCPP_TYPE_VIS_ONLY independent_bits_engine { template class __get_n @@ -3246,7 +3246,7 @@ public: }; template -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 @@ private: // seed_seq -class _LIBCPP_TYPE_VIS seed_seq +class _LIBCPP_TYPE_VIS_ONLY seed_seq { public: // types @@ -3684,13 +3684,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // uniform_real_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // 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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, bernoulli_distribution& __x) // binomial_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // exponential_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // normal_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // lognormal_distribution template -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 __nd_; public: @@ -4487,13 +4487,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // poisson_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // weibull_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, } template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // gamma_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // negative_binomial_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // geometric_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // chi_squared_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // cauchy_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // fisher_f_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // student_t_distribution template -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 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // discrete_distribution template -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 __p_; public: @@ -6057,13 +6057,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // piecewise_constant_distribution template -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 __b_; vector __densities_; @@ -6381,13 +6381,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // piecewise_linear_distribution template -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 __b_; vector __densities_; diff --git a/libcxx/include/ratio b/libcxx/include/ratio index f4e741e843e8..48dcd81c1a72 100644 --- a/libcxx/include/ratio +++ b/libcxx/include/ratio @@ -231,7 +231,7 @@ public: }; template -class _LIBCPP_TYPE_VIS ratio +class _LIBCPP_TYPE_VIS_ONLY ratio { static_assert(__static_abs<_Num>::value >= 0, "ratio numerator is out of range"); static_assert(_Den != 0, "ratio divide by 0"); @@ -292,7 +292,7 @@ template using ratio_multiply #else // _LIBCPP_HAS_NO_TEMPLATE_ALIASES template -struct _LIBCPP_TYPE_VIS ratio_multiply +struct _LIBCPP_TYPE_VIS_ONLY ratio_multiply : public __ratio_multiply<_R1, _R2>::type {}; #endif // _LIBCPP_HAS_NO_TEMPLATE_ALIASES @@ -319,7 +319,7 @@ template using ratio_divide #else // _LIBCPP_HAS_NO_TEMPLATE_ALIASES template -struct _LIBCPP_TYPE_VIS ratio_divide +struct _LIBCPP_TYPE_VIS_ONLY ratio_divide : public __ratio_divide<_R1, _R2>::type {}; #endif // _LIBCPP_HAS_NO_TEMPLATE_ALIASES @@ -354,7 +354,7 @@ template using ratio_add #else // _LIBCPP_HAS_NO_TEMPLATE_ALIASES template -struct _LIBCPP_TYPE_VIS ratio_add +struct _LIBCPP_TYPE_VIS_ONLY ratio_add : public __ratio_add<_R1, _R2>::type {}; #endif // _LIBCPP_HAS_NO_TEMPLATE_ALIASES @@ -389,7 +389,7 @@ template using ratio_subtract #else // _LIBCPP_HAS_NO_TEMPLATE_ALIASES template -struct _LIBCPP_TYPE_VIS ratio_subtract +struct _LIBCPP_TYPE_VIS_ONLY ratio_subtract : public __ratio_subtract<_R1, _R2>::type {}; #endif // _LIBCPP_HAS_NO_TEMPLATE_ALIASES @@ -397,11 +397,11 @@ struct _LIBCPP_TYPE_VIS ratio_subtract // ratio_equal template -struct _LIBCPP_TYPE_VIS ratio_equal +struct _LIBCPP_TYPE_VIS_ONLY ratio_equal : public integral_constant {}; template -struct _LIBCPP_TYPE_VIS ratio_not_equal +struct _LIBCPP_TYPE_VIS_ONLY ratio_not_equal : public integral_constant::value> {}; // ratio_less @@ -460,19 +460,19 @@ struct __ratio_less<_R1, _R2, -1LL, -1LL> }; template -struct _LIBCPP_TYPE_VIS ratio_less +struct _LIBCPP_TYPE_VIS_ONLY ratio_less : public integral_constant::value> {}; template -struct _LIBCPP_TYPE_VIS ratio_less_equal +struct _LIBCPP_TYPE_VIS_ONLY ratio_less_equal : public integral_constant::value> {}; template -struct _LIBCPP_TYPE_VIS ratio_greater +struct _LIBCPP_TYPE_VIS_ONLY ratio_greater : public integral_constant::value> {}; template -struct _LIBCPP_TYPE_VIS ratio_greater_equal +struct _LIBCPP_TYPE_VIS_ONLY ratio_greater_equal : public integral_constant::value> {}; template diff --git a/libcxx/include/regex b/libcxx/include/regex index bde3af7e455c..776bc653ce4b 100644 --- a/libcxx/include/regex +++ b/libcxx/include/regex @@ -925,7 +925,7 @@ public: }; template -struct _LIBCPP_TYPE_VIS regex_traits +struct _LIBCPP_TYPE_VIS_ONLY regex_traits { public: typedef _CharT char_type; @@ -1100,7 +1100,7 @@ regex_traits<_CharT>::__transform_primary(_ForwardIterator __f, // lookup_collatename is very FreeBSD-specific -string __get_collation_name(const char* __s); +_LIBCPP_FUNC_VIS string __get_collation_name(const char* __s); template template @@ -1161,7 +1161,7 @@ regex_traits<_CharT>::__lookup_collatename(_ForwardIterator __f, // lookup_classname -ctype_base::mask __get_classname(const char* __s, bool __icase); +ctype_base::mask _LIBCPP_FUNC_VIS __get_classname(const char* __s, bool __icase); template template @@ -1235,11 +1235,11 @@ regex_traits<_CharT>::__value(wchar_t __ch, int __radix) const template class __node; -template class _LIBCPP_TYPE_VIS sub_match; +template class _LIBCPP_TYPE_VIS_ONLY sub_match; template > > -class _LIBCPP_TYPE_VIS match_results; +class _LIBCPP_TYPE_VIS_ONLY match_results; template struct __state @@ -2014,6 +2014,9 @@ public: virtual void __exec(__state&) const; }; +template <> _LIBCPP_FUNC_VIS void __match_any_but_newline::__exec(__state&) const; +template <> _LIBCPP_FUNC_VIS void __match_any_but_newline::__exec(__state&) const; + // __match_char template @@ -2415,7 +2418,7 @@ __exit: template class __lookahead; template > -class _LIBCPP_TYPE_VIS basic_regex +class _LIBCPP_TYPE_VIS_ONLY basic_regex { public: // types: @@ -4781,7 +4784,7 @@ typedef basic_regex wregex; // sub_match template -class _LIBCPP_TYPE_VIS sub_match +class _LIBCPP_TYPE_VIS_ONLY sub_match : public pair<_BidirectionalIterator, _BidirectionalIterator> { public: @@ -5204,7 +5207,7 @@ operator<<(basic_ostream<_CharT, _ST>& __os, const sub_match<_BiIter>& __m) } template -class _LIBCPP_TYPE_VIS match_results +class _LIBCPP_TYPE_VIS_ONLY match_results { public: typedef _Allocator allocator_type; @@ -6007,7 +6010,7 @@ regex_match(const basic_string<_CharT, _ST, _SA>& __s, template ::value_type, class _Traits = regex_traits<_CharT> > -class _LIBCPP_TYPE_VIS regex_iterator +class _LIBCPP_TYPE_VIS_ONLY regex_iterator { public: typedef basic_regex<_CharT, _Traits> regex_type; @@ -6119,7 +6122,7 @@ typedef regex_iterator wsregex_iterator; template ::value_type, class _Traits = regex_traits<_CharT> > -class _LIBCPP_TYPE_VIS regex_token_iterator +class _LIBCPP_TYPE_VIS_ONLY regex_token_iterator { public: typedef basic_regex<_CharT, _Traits> regex_type; diff --git a/libcxx/include/scoped_allocator b/libcxx/include/scoped_allocator index 92532342075b..aa8bece6d331 100644 --- a/libcxx/include/scoped_allocator +++ b/libcxx/include/scoped_allocator @@ -365,7 +365,7 @@ struct __outermost<_Alloc, true> }; template -class _LIBCPP_TYPE_VIS scoped_allocator_adaptor<_OuterAlloc, _InnerAllocs...> +class _LIBCPP_TYPE_VIS_ONLY scoped_allocator_adaptor<_OuterAlloc, _InnerAllocs...> : public __scoped_allocator_storage<_OuterAlloc, _InnerAllocs...> { typedef __scoped_allocator_storage<_OuterAlloc, _InnerAllocs...> base; diff --git a/libcxx/include/set b/libcxx/include/set index 11ea9658bd6a..d714c1ac1c35 100644 --- a/libcxx/include/set +++ b/libcxx/include/set @@ -346,7 +346,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template , class _Allocator = allocator<_Key> > -class _LIBCPP_TYPE_VIS set +class _LIBCPP_TYPE_VIS_ONLY set { public: // types: @@ -685,7 +685,7 @@ swap(set<_Key, _Compare, _Allocator>& __x, template , class _Allocator = allocator<_Key> > -class _LIBCPP_TYPE_VIS multiset +class _LIBCPP_TYPE_VIS_ONLY multiset { public: // types: diff --git a/libcxx/include/sstream b/libcxx/include/sstream index a8f8148ade57..f90d4464a402 100644 --- a/libcxx/include/sstream +++ b/libcxx/include/sstream @@ -186,7 +186,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD // basic_stringbuf template -class _LIBCPP_TYPE_VIS basic_stringbuf +class _LIBCPP_TYPE_VIS_ONLY basic_stringbuf : public basic_streambuf<_CharT, _Traits> { public: @@ -613,7 +613,7 @@ basic_stringbuf<_CharT, _Traits, _Allocator>::seekpos(pos_type __sp, // basic_istringstream template -class _LIBCPP_TYPE_VIS basic_istringstream +class _LIBCPP_TYPE_VIS_ONLY basic_istringstream : public basic_istream<_CharT, _Traits> { public: @@ -732,7 +732,7 @@ basic_istringstream<_CharT, _Traits, _Allocator>::str(const string_type& __s) // basic_ostringstream template -class _LIBCPP_TYPE_VIS basic_ostringstream +class _LIBCPP_TYPE_VIS_ONLY basic_ostringstream : public basic_ostream<_CharT, _Traits> { public: @@ -851,7 +851,7 @@ basic_ostringstream<_CharT, _Traits, _Allocator>::str(const string_type& __s) // basic_stringstream template -class _LIBCPP_TYPE_VIS basic_stringstream +class _LIBCPP_TYPE_VIS_ONLY basic_stringstream : public basic_iostream<_CharT, _Traits> { public: diff --git a/libcxx/include/stack b/libcxx/include/stack index b8a7f4c08090..30909c1ee3bd 100644 --- a/libcxx/include/stack +++ b/libcxx/include/stack @@ -91,7 +91,7 @@ template _LIBCPP_BEGIN_NAMESPACE_STD -template class _LIBCPP_TYPE_VIS stack; +template class _LIBCPP_TYPE_VIS_ONLY stack; template _LIBCPP_INLINE_VISIBILITY @@ -104,7 +104,7 @@ bool operator< (const stack<_Tp, _Container>& __x, const stack<_Tp, _Container>& __y); template > -class _LIBCPP_TYPE_VIS stack +class _LIBCPP_TYPE_VIS_ONLY stack { public: typedef _Container container_type; @@ -282,7 +282,7 @@ swap(stack<_Tp, _Container>& __x, stack<_Tp, _Container>& __y) } template -struct _LIBCPP_TYPE_VIS uses_allocator, _Alloc> +struct _LIBCPP_TYPE_VIS_ONLY uses_allocator, _Alloc> : public uses_allocator<_Container, _Alloc> { }; diff --git a/libcxx/include/streambuf b/libcxx/include/streambuf index 826159420ac1..6adfc9237c7d 100644 --- a/libcxx/include/streambuf +++ b/libcxx/include/streambuf @@ -119,7 +119,7 @@ protected: _LIBCPP_BEGIN_NAMESPACE_STD template -class _LIBCPP_TYPE_VIS basic_streambuf +class _LIBCPP_TYPE_VIS_ONLY basic_streambuf { public: // types: @@ -553,11 +553,11 @@ basic_streambuf<_CharT, _Traits>::overflow(int_type) return traits_type::eof(); } -_LIBCPP_EXTERN_TEMPLATE(class basic_streambuf) -_LIBCPP_EXTERN_TEMPLATE(class basic_streambuf) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_streambuf) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_streambuf) -_LIBCPP_EXTERN_TEMPLATE(class basic_ios) -_LIBCPP_EXTERN_TEMPLATE(class basic_ios) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_ios) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_ios) _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/include/string b/libcxx/include/string index 83dc53a10976..c5ed95cfb128 100644 --- a/libcxx/include/string +++ b/libcxx/include/string @@ -462,7 +462,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD // fpos template -class _LIBCPP_TYPE_VIS fpos +class _LIBCPP_TYPE_VIS_ONLY fpos { private: _StateT __st_; @@ -499,7 +499,7 @@ bool operator!=(const fpos<_StateT>& __x, const fpos<_StateT>& __y) // char_traits template -struct _LIBCPP_TYPE_VIS char_traits +struct _LIBCPP_TYPE_VIS_ONLY char_traits { typedef _CharT char_type; typedef int int_type; @@ -625,7 +625,7 @@ char_traits<_CharT>::assign(char_type* __s, size_t __n, char_type __a) // char_traits template <> -struct _LIBCPP_TYPE_VIS char_traits +struct _LIBCPP_TYPE_VIS_ONLY char_traits { typedef char char_type; typedef int int_type; @@ -681,7 +681,7 @@ struct _LIBCPP_TYPE_VIS char_traits // char_traits template <> -struct _LIBCPP_TYPE_VIS char_traits +struct _LIBCPP_TYPE_VIS_ONLY char_traits { typedef wchar_t char_type; typedef wint_t int_type; @@ -738,7 +738,7 @@ struct _LIBCPP_TYPE_VIS char_traits #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS template <> -struct _LIBCPP_TYPE_VIS char_traits +struct _LIBCPP_TYPE_VIS_ONLY char_traits { typedef char16_t char_type; typedef uint_least16_t int_type; @@ -858,7 +858,7 @@ char_traits::assign(char_type* __s, size_t __n, char_type __a) } template <> -struct _LIBCPP_TYPE_VIS char_traits +struct _LIBCPP_TYPE_VIS_ONLY char_traits { typedef char32_t char_type; typedef uint_least32_t int_type; @@ -1003,7 +1003,7 @@ basic_string<_CharT, _Traits, _Allocator> operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, _CharT __y); template -class __basic_string_common +class _LIBCPP_TYPE_VIS_ONLY __basic_string_common { protected: void __throw_length_error() const; @@ -1036,7 +1036,7 @@ __basic_string_common<__b>::__throw_out_of_range() const #pragma warning( push ) #pragma warning( disable: 4231 ) #endif // _LIBCPP_MSVC -_LIBCPP_EXTERN_TEMPLATE(class __basic_string_common) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS __basic_string_common) #ifdef _LIBCPP_MSVC #pragma warning( pop ) #endif // _LIBCPP_MSVC @@ -1057,7 +1057,7 @@ struct __padding<_CharT, 1> #endif // _LIBCPP_ALTERNATE_STRING_LAYOUT template -class _LIBCPP_TYPE_VIS basic_string +class _LIBCPP_TYPE_VIS_ONLY basic_string : private __basic_string_common { public: @@ -3998,45 +3998,45 @@ typedef basic_string u32string; #endif // _LIBCPP_HAS_NO_UNICODE_CHARS -int stoi (const string& __str, size_t* __idx = 0, int __base = 10); -long stol (const string& __str, size_t* __idx = 0, int __base = 10); -unsigned long stoul (const string& __str, size_t* __idx = 0, int __base = 10); -long long stoll (const string& __str, size_t* __idx = 0, int __base = 10); -unsigned long long stoull(const string& __str, size_t* __idx = 0, int __base = 10); +_LIBCPP_FUNC_VIS int stoi (const string& __str, size_t* __idx = 0, int __base = 10); +_LIBCPP_FUNC_VIS long stol (const string& __str, size_t* __idx = 0, int __base = 10); +_LIBCPP_FUNC_VIS unsigned long stoul (const string& __str, size_t* __idx = 0, int __base = 10); +_LIBCPP_FUNC_VIS long long stoll (const string& __str, size_t* __idx = 0, int __base = 10); +_LIBCPP_FUNC_VIS unsigned long long stoull(const string& __str, size_t* __idx = 0, int __base = 10); -float stof (const string& __str, size_t* __idx = 0); -double stod (const string& __str, size_t* __idx = 0); -long double stold(const string& __str, size_t* __idx = 0); +_LIBCPP_FUNC_VIS float stof (const string& __str, size_t* __idx = 0); +_LIBCPP_FUNC_VIS double stod (const string& __str, size_t* __idx = 0); +_LIBCPP_FUNC_VIS long double stold(const string& __str, size_t* __idx = 0); -string to_string(int __val); -string to_string(unsigned __val); -string to_string(long __val); -string to_string(unsigned long __val); -string to_string(long long __val); -string to_string(unsigned long long __val); -string to_string(float __val); -string to_string(double __val); -string to_string(long double __val); +_LIBCPP_FUNC_VIS string to_string(int __val); +_LIBCPP_FUNC_VIS string to_string(unsigned __val); +_LIBCPP_FUNC_VIS string to_string(long __val); +_LIBCPP_FUNC_VIS string to_string(unsigned long __val); +_LIBCPP_FUNC_VIS string to_string(long long __val); +_LIBCPP_FUNC_VIS string to_string(unsigned long long __val); +_LIBCPP_FUNC_VIS string to_string(float __val); +_LIBCPP_FUNC_VIS string to_string(double __val); +_LIBCPP_FUNC_VIS string to_string(long double __val); -int stoi (const wstring& __str, size_t* __idx = 0, int __base = 10); -long stol (const wstring& __str, size_t* __idx = 0, int __base = 10); -unsigned long stoul (const wstring& __str, size_t* __idx = 0, int __base = 10); -long long stoll (const wstring& __str, size_t* __idx = 0, int __base = 10); -unsigned long long stoull(const wstring& __str, size_t* __idx = 0, int __base = 10); +_LIBCPP_FUNC_VIS int stoi (const wstring& __str, size_t* __idx = 0, int __base = 10); +_LIBCPP_FUNC_VIS long stol (const wstring& __str, size_t* __idx = 0, int __base = 10); +_LIBCPP_FUNC_VIS unsigned long stoul (const wstring& __str, size_t* __idx = 0, int __base = 10); +_LIBCPP_FUNC_VIS long long stoll (const wstring& __str, size_t* __idx = 0, int __base = 10); +_LIBCPP_FUNC_VIS unsigned long long stoull(const wstring& __str, size_t* __idx = 0, int __base = 10); -float stof (const wstring& __str, size_t* __idx = 0); -double stod (const wstring& __str, size_t* __idx = 0); -long double stold(const wstring& __str, size_t* __idx = 0); +_LIBCPP_FUNC_VIS float stof (const wstring& __str, size_t* __idx = 0); +_LIBCPP_FUNC_VIS double stod (const wstring& __str, size_t* __idx = 0); +_LIBCPP_FUNC_VIS long double stold(const wstring& __str, size_t* __idx = 0); -wstring to_wstring(int __val); -wstring to_wstring(unsigned __val); -wstring to_wstring(long __val); -wstring to_wstring(unsigned long __val); -wstring to_wstring(long long __val); -wstring to_wstring(unsigned long long __val); -wstring to_wstring(float __val); -wstring to_wstring(double __val); -wstring to_wstring(long double __val); +_LIBCPP_FUNC_VIS wstring to_wstring(int __val); +_LIBCPP_FUNC_VIS wstring to_wstring(unsigned __val); +_LIBCPP_FUNC_VIS wstring to_wstring(long __val); +_LIBCPP_FUNC_VIS wstring to_wstring(unsigned long __val); +_LIBCPP_FUNC_VIS wstring to_wstring(long long __val); +_LIBCPP_FUNC_VIS wstring to_wstring(unsigned long long __val); +_LIBCPP_FUNC_VIS wstring to_wstring(float __val); +_LIBCPP_FUNC_VIS wstring to_wstring(double __val); +_LIBCPP_FUNC_VIS wstring to_wstring(long double __val); template const typename basic_string<_CharT, _Traits, _Allocator>::size_type @@ -4050,7 +4050,7 @@ size_t _LIBCPP_INLINE_VISIBILITY __do_string_hash(_Ptr __p, _Ptr __e) } template -struct _LIBCPP_TYPE_VIS hash > +struct _LIBCPP_TYPE_VIS_ONLY hash > : public unary_function, size_t> { size_t @@ -4138,8 +4138,8 @@ namespace literals } #endif -_LIBCPP_EXTERN_TEMPLATE(class basic_string) -_LIBCPP_EXTERN_TEMPLATE(class basic_string) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_string) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_string) extern template string diff --git a/libcxx/include/system_error b/libcxx/include/system_error index 1c1c7ebddf37..ac3fb4474d7c 100644 --- a/libcxx/include/system_error +++ b/libcxx/include/system_error @@ -232,13 +232,13 @@ _LIBCPP_BEGIN_NAMESPACE_STD // is_error_code_enum template -struct _LIBCPP_TYPE_VIS is_error_code_enum +struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum : public false_type {}; // is_error_condition_enum template -struct _LIBCPP_TYPE_VIS is_error_condition_enum +struct _LIBCPP_TYPE_VIS_ONLY is_error_condition_enum : public false_type {}; // Some error codes are not present on all platforms, so we provide equivalents @@ -345,12 +345,12 @@ _LIBCPP_DECLARE_STRONG_ENUM(errc) _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(errc) template <> -struct _LIBCPP_TYPE_VIS is_error_condition_enum +struct _LIBCPP_TYPE_VIS_ONLY is_error_condition_enum : true_type { }; #ifdef _LIBCPP_HAS_NO_STRONG_ENUMS template <> -struct _LIBCPP_TYPE_VIS is_error_condition_enum +struct _LIBCPP_TYPE_VIS_ONLY is_error_condition_enum : true_type { }; #endif @@ -397,8 +397,8 @@ public: virtual string message(int ev) const; }; -const error_category& generic_category() _NOEXCEPT; -const error_category& system_category() _NOEXCEPT; +_LIBCPP_FUNC_VIS const error_category& generic_category() _NOEXCEPT; +_LIBCPP_FUNC_VIS const error_category& system_category() _NOEXCEPT; class _LIBCPP_TYPE_VIS error_condition { @@ -597,7 +597,7 @@ operator!=(const error_condition& __x, const error_condition& __y) _NOEXCEPT {return !(__x == __y);} template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY @@ -629,7 +629,7 @@ private: static string __init(const error_code&, string); }; -void __throw_system_error(int ev, const char* what_arg); +_LIBCPP_FUNC_VIS void __throw_system_error(int ev, const char* what_arg); _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/include/thread b/libcxx/include/thread index f41ea2902055..1f1e4a2b9459 100644 --- a/libcxx/include/thread +++ b/libcxx/include/thread @@ -185,10 +185,9 @@ _LIBCPP_INLINE_VISIBILITY __thread_id get_id() _NOEXCEPT; } // this_thread -class _LIBCPP_TYPE_VIS __thread_id; -template<> struct _LIBCPP_TYPE_VIS hash<__thread_id>; +template<> struct _LIBCPP_TYPE_VIS_ONLY hash<__thread_id>; -class _LIBCPP_TYPE_VIS __thread_id +class _LIBCPP_TYPE_VIS_ONLY __thread_id { // FIXME: pthread_t is a pointer on Darwin but a long on Linux. // NULL is the no-thread value on Darwin. Someone needs to check @@ -231,11 +230,11 @@ private: friend __thread_id this_thread::get_id() _NOEXCEPT; friend class _LIBCPP_TYPE_VIS thread; - friend struct _LIBCPP_TYPE_VIS hash<__thread_id>; + friend struct _LIBCPP_TYPE_VIS_ONLY hash<__thread_id>; }; template<> -struct _LIBCPP_TYPE_VIS hash<__thread_id> +struct _LIBCPP_TYPE_VIS_ONLY hash<__thread_id> : public unary_function<__thread_id, size_t> { _LIBCPP_INLINE_VISIBILITY @@ -307,7 +306,7 @@ class __assoc_sub_state; class _LIBCPP_HIDDEN __thread_struct_imp; -class __thread_struct +class _LIBCPP_TYPE_VIS __thread_struct { __thread_struct_imp* __p_; @@ -321,7 +320,7 @@ public: void __make_ready_at_thread_exit(__assoc_sub_state*); }; -__thread_specific_ptr<__thread_struct>& __thread_local_data(); +_LIBCPP_FUNC_VIS __thread_specific_ptr<__thread_struct>& __thread_local_data(); #ifndef _LIBCPP_HAS_NO_VARIADICS @@ -405,7 +404,7 @@ void swap(thread& __x, thread& __y) _NOEXCEPT {__x.swap(__y);} namespace this_thread { -void sleep_for(const chrono::nanoseconds& ns); +_LIBCPP_FUNC_VIS void sleep_for(const chrono::nanoseconds& ns); template void diff --git a/libcxx/include/tuple b/libcxx/include/tuple index 94876c91c028..1829932e14a8 100644 --- a/libcxx/include/tuple +++ b/libcxx/include/tuple @@ -135,7 +135,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD // allocator_arg_t -struct _LIBCPP_TYPE_VIS allocator_arg_t { }; +struct _LIBCPP_TYPE_VIS_ONLY allocator_arg_t { }; #if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_MEMORY) extern const allocator_arg_t allocator_arg; @@ -170,7 +170,7 @@ struct __uses_allocator<_Tp, _Alloc, false> }; template -struct _LIBCPP_TYPE_VIS uses_allocator +struct _LIBCPP_TYPE_VIS_ONLY uses_allocator : public __uses_allocator<_Tp, _Alloc> { }; @@ -200,7 +200,7 @@ struct __uses_alloc_ctor // tuple_size template -class _LIBCPP_TYPE_VIS tuple_size > +class _LIBCPP_TYPE_VIS_ONLY tuple_size > : public integral_constant { }; @@ -208,7 +208,7 @@ class _LIBCPP_TYPE_VIS tuple_size > // tuple_element template -class _LIBCPP_TYPE_VIS tuple_element<_Ip, tuple<_Tp...> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, tuple<_Tp...> > { public: typedef typename tuple_element<_Ip, __tuple_types<_Tp...> >::type type; @@ -536,7 +536,7 @@ struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...> }; template -class _LIBCPP_TYPE_VIS tuple +class _LIBCPP_TYPE_VIS_ONLY tuple { typedef __tuple_impl::type, _Tp...> base; @@ -724,7 +724,7 @@ public: }; template <> -class _LIBCPP_TYPE_VIS tuple<> +class _LIBCPP_TYPE_VIS_ONLY tuple<> { public: _LIBCPP_INLINE_VISIBILITY @@ -864,7 +864,7 @@ struct __ignore_t namespace { const __ignore_t ignore = __ignore_t(); } -template class _LIBCPP_TYPE_VIS reference_wrapper; +template class _LIBCPP_TYPE_VIS_ONLY reference_wrapper; template struct ___make_tuple_return @@ -1140,7 +1140,7 @@ tuple_cat(_Tuple0&& __t0, _Tuples&&... __tpls) } template -struct _LIBCPP_TYPE_VIS uses_allocator, _Alloc> +struct _LIBCPP_TYPE_VIS_ONLY uses_allocator, _Alloc> : true_type {}; template diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits index b5eb40d2a59d..511a05288f2b 100644 --- a/libcxx/include/type_traits +++ b/libcxx/include/type_traits @@ -208,16 +208,16 @@ namespace std _LIBCPP_BEGIN_NAMESPACE_STD template - struct _LIBCPP_TYPE_VIS conditional {typedef _If type;}; + struct _LIBCPP_TYPE_VIS_ONLY conditional {typedef _If type;}; template - struct _LIBCPP_TYPE_VIS conditional {typedef _Then type;}; + struct _LIBCPP_TYPE_VIS_ONLY conditional {typedef _Then type;}; #if _LIBCPP_STD_VER > 11 template using conditional_t = typename conditional<_Bp, _If, _Then>::type; #endif -template struct _LIBCPP_TYPE_VIS enable_if {}; -template struct _LIBCPP_TYPE_VIS enable_if {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY enable_if {}; +template struct _LIBCPP_TYPE_VIS_ONLY enable_if {typedef _Tp type;}; #if _LIBCPP_STD_VER > 11 template using enable_if_t = typename enable_if<_Bp, _Tp>::type; @@ -229,7 +229,7 @@ struct __two {char __lx[2];}; // helper class: template -struct _LIBCPP_TYPE_VIS integral_constant +struct _LIBCPP_TYPE_VIS_ONLY integral_constant { static _LIBCPP_CONSTEXPR const _Tp value = __v; typedef _Tp value_type; @@ -250,33 +250,33 @@ typedef integral_constant false_type; // is_const -template struct _LIBCPP_TYPE_VIS is_const : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_const<_Tp const> : public true_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_const : public false_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_const<_Tp const> : public true_type {}; // is_volatile -template struct _LIBCPP_TYPE_VIS is_volatile : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_volatile<_Tp volatile> : public true_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_volatile : public false_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_volatile<_Tp volatile> : public true_type {}; // remove_const -template struct _LIBCPP_TYPE_VIS remove_const {typedef _Tp type;}; -template struct _LIBCPP_TYPE_VIS remove_const {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_const {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_const {typedef _Tp type;}; #if _LIBCPP_STD_VER > 11 template using remove_const_t = typename remove_const<_Tp>::type; #endif // remove_volatile -template struct _LIBCPP_TYPE_VIS remove_volatile {typedef _Tp type;}; -template struct _LIBCPP_TYPE_VIS remove_volatile {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_volatile {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_volatile {typedef _Tp type;}; #if _LIBCPP_STD_VER > 11 template using remove_volatile_t = typename remove_volatile<_Tp>::type; #endif // remove_cv -template struct _LIBCPP_TYPE_VIS remove_cv +template struct _LIBCPP_TYPE_VIS_ONLY remove_cv {typedef typename remove_volatile::type>::type type;}; #if _LIBCPP_STD_VER > 11 template using remove_cv_t = typename remove_cv<_Tp>::type; @@ -287,7 +287,7 @@ template using remove_cv_t = typename remove_cv<_Tp>::type; template struct __is_void : public false_type {}; template <> struct __is_void : public true_type {}; -template struct _LIBCPP_TYPE_VIS is_void +template struct _LIBCPP_TYPE_VIS_ONLY is_void : public __is_void::type> {}; // __is_nullptr_t @@ -295,7 +295,7 @@ template struct _LIBCPP_TYPE_VIS is_void template struct ____is_nullptr_t : public false_type {}; template <> struct ____is_nullptr_t : public true_type {}; -template struct _LIBCPP_TYPE_VIS __is_nullptr_t +template struct _LIBCPP_TYPE_VIS_ONLY __is_nullptr_t : public ____is_nullptr_t::type> {}; // is_integral @@ -319,7 +319,7 @@ template <> struct __is_integral : public true_type template <> struct __is_integral : public true_type {}; template <> struct __is_integral : public true_type {}; -template struct _LIBCPP_TYPE_VIS is_integral +template struct _LIBCPP_TYPE_VIS_ONLY is_integral : public __is_integral::type> {}; // is_floating_point @@ -329,16 +329,16 @@ template <> struct __is_floating_point : public true_type template <> struct __is_floating_point : public true_type {}; template <> struct __is_floating_point : public true_type {}; -template struct _LIBCPP_TYPE_VIS is_floating_point +template struct _LIBCPP_TYPE_VIS_ONLY is_floating_point : public __is_floating_point::type> {}; // is_array -template struct _LIBCPP_TYPE_VIS is_array +template struct _LIBCPP_TYPE_VIS_ONLY is_array : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_array<_Tp[]> +template struct _LIBCPP_TYPE_VIS_ONLY is_array<_Tp[]> : public true_type {}; -template struct _LIBCPP_TYPE_VIS is_array<_Tp[_Np]> +template struct _LIBCPP_TYPE_VIS_ONLY is_array<_Tp[_Np]> : public true_type {}; // is_pointer @@ -346,23 +346,23 @@ template struct _LIBCPP_TYPE_VIS is_array<_Tp[_Np]> template struct __is_pointer : public false_type {}; template struct __is_pointer<_Tp*> : public true_type {}; -template struct _LIBCPP_TYPE_VIS is_pointer +template struct _LIBCPP_TYPE_VIS_ONLY is_pointer : public __is_pointer::type> {}; // is_reference -template struct _LIBCPP_TYPE_VIS is_lvalue_reference : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_lvalue_reference<_Tp&> : public true_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_lvalue_reference : public false_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_lvalue_reference<_Tp&> : public true_type {}; -template struct _LIBCPP_TYPE_VIS is_rvalue_reference : public false_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_rvalue_reference : public false_type {}; #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -template struct _LIBCPP_TYPE_VIS is_rvalue_reference<_Tp&&> : public true_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_rvalue_reference<_Tp&&> : public true_type {}; #endif -template struct _LIBCPP_TYPE_VIS is_reference : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_reference<_Tp&> : public true_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_reference : public false_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_reference<_Tp&> : public true_type {}; #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -template struct _LIBCPP_TYPE_VIS is_reference<_Tp&&> : public true_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_reference<_Tp&&> : public true_type {}; #endif #if defined(__clang__) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) @@ -373,13 +373,13 @@ template struct _LIBCPP_TYPE_VIS is_reference<_Tp&&> : public true_t #if __has_feature(is_union) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) -template struct _LIBCPP_TYPE_VIS is_union +template struct _LIBCPP_TYPE_VIS_ONLY is_union : public integral_constant {}; #else template struct __libcpp_union : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_union +template struct _LIBCPP_TYPE_VIS_ONLY is_union : public __libcpp_union::type> {}; #endif @@ -388,7 +388,7 @@ template struct _LIBCPP_TYPE_VIS is_union #if __has_feature(is_class) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) -template struct _LIBCPP_TYPE_VIS is_class +template struct _LIBCPP_TYPE_VIS_ONLY is_class : public integral_constant {}; #else @@ -399,15 +399,15 @@ template char __test(int _Tp::*); template __two __test(...); } -template struct _LIBCPP_TYPE_VIS is_class +template struct _LIBCPP_TYPE_VIS_ONLY is_class : public integral_constant(0)) == 1 && !is_union<_Tp>::value> {}; #endif // is_same -template struct _LIBCPP_TYPE_VIS is_same : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_same<_Tp, _Tp> : public true_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_same : public false_type {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_same<_Tp, _Tp> : public true_type {}; // is_function @@ -428,7 +428,7 @@ struct __is_function {}; template struct __is_function<_Tp, true> : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_function +template struct _LIBCPP_TYPE_VIS_ONLY is_function : public __is_function<_Tp> {}; // is_member_function_pointer @@ -436,7 +436,7 @@ template struct _LIBCPP_TYPE_VIS is_function template struct __is_member_function_pointer : public false_type {}; template struct __is_member_function_pointer<_Tp _Up::*> : public is_function<_Tp> {}; -template struct _LIBCPP_TYPE_VIS is_member_function_pointer +template struct _LIBCPP_TYPE_VIS_ONLY is_member_function_pointer : public __is_member_function_pointer::type> {}; // is_member_pointer @@ -444,12 +444,12 @@ template struct _LIBCPP_TYPE_VIS is_member_function_pointer template struct __is_member_pointer : public false_type {}; template struct __is_member_pointer<_Tp _Up::*> : public true_type {}; -template struct _LIBCPP_TYPE_VIS is_member_pointer +template struct _LIBCPP_TYPE_VIS_ONLY is_member_pointer : public __is_member_pointer::type> {}; // is_member_object_pointer -template struct _LIBCPP_TYPE_VIS is_member_object_pointer +template struct _LIBCPP_TYPE_VIS_ONLY is_member_object_pointer : public integral_constant::value && !is_member_function_pointer<_Tp>::value> {}; @@ -457,12 +457,12 @@ template struct _LIBCPP_TYPE_VIS is_member_object_pointer #if __has_feature(is_enum) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) -template struct _LIBCPP_TYPE_VIS is_enum +template struct _LIBCPP_TYPE_VIS_ONLY is_enum : public integral_constant {}; #else -template struct _LIBCPP_TYPE_VIS is_enum +template struct _LIBCPP_TYPE_VIS_ONLY is_enum : public integral_constant::value && !is_integral<_Tp>::value && !is_floating_point<_Tp>::value && @@ -478,31 +478,31 @@ template struct _LIBCPP_TYPE_VIS is_enum // is_arithmetic -template struct _LIBCPP_TYPE_VIS is_arithmetic +template struct _LIBCPP_TYPE_VIS_ONLY is_arithmetic : public integral_constant::value || is_floating_point<_Tp>::value> {}; // is_fundamental -template struct _LIBCPP_TYPE_VIS is_fundamental +template struct _LIBCPP_TYPE_VIS_ONLY is_fundamental : public integral_constant::value || __is_nullptr_t<_Tp>::value || is_arithmetic<_Tp>::value> {}; // is_scalar -template struct _LIBCPP_TYPE_VIS is_scalar +template struct _LIBCPP_TYPE_VIS_ONLY is_scalar : public integral_constant::value || is_member_pointer<_Tp>::value || is_pointer<_Tp>::value || __is_nullptr_t<_Tp>::value || is_enum<_Tp>::value > {}; -template <> struct _LIBCPP_TYPE_VIS is_scalar : public true_type {}; +template <> struct _LIBCPP_TYPE_VIS_ONLY is_scalar : public true_type {}; // is_object -template struct _LIBCPP_TYPE_VIS is_object +template struct _LIBCPP_TYPE_VIS_ONLY is_object : public integral_constant::value || is_array<_Tp>::value || is_union<_Tp>::value || @@ -510,7 +510,7 @@ template struct _LIBCPP_TYPE_VIS is_object // is_compound -template struct _LIBCPP_TYPE_VIS is_compound +template struct _LIBCPP_TYPE_VIS_ONLY is_compound : public integral_constant::value> {}; // add_const @@ -523,7 +523,7 @@ struct __add_const {typedef _Tp type;}; template struct __add_const<_Tp, false> {typedef const _Tp type;}; -template struct _LIBCPP_TYPE_VIS add_const +template struct _LIBCPP_TYPE_VIS_ONLY add_const {typedef typename __add_const<_Tp>::type type;}; #if _LIBCPP_STD_VER > 11 @@ -540,7 +540,7 @@ struct __add_volatile {typedef _Tp type;}; template struct __add_volatile<_Tp, false> {typedef volatile _Tp type;}; -template struct _LIBCPP_TYPE_VIS add_volatile +template struct _LIBCPP_TYPE_VIS_ONLY add_volatile {typedef typename __add_volatile<_Tp>::type type;}; #if _LIBCPP_STD_VER > 11 @@ -549,7 +549,7 @@ template using add_volatile_t = typename add_volatile<_Tp>::type; // add_cv -template struct _LIBCPP_TYPE_VIS add_cv +template struct _LIBCPP_TYPE_VIS_ONLY add_cv {typedef typename add_const::type>::type type;}; #if _LIBCPP_STD_VER > 11 @@ -558,10 +558,10 @@ template using add_cv_t = typename add_cv<_Tp>::type; // remove_reference -template struct _LIBCPP_TYPE_VIS remove_reference {typedef _Tp type;}; -template struct _LIBCPP_TYPE_VIS remove_reference<_Tp&> {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_reference {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_reference<_Tp&> {typedef _Tp type;}; #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -template struct _LIBCPP_TYPE_VIS remove_reference<_Tp&&> {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_reference<_Tp&&> {typedef _Tp type;}; #endif #if _LIBCPP_STD_VER > 11 @@ -570,12 +570,12 @@ template using remove_reference_t = typename remove_reference<_Tp>:: // add_lvalue_reference -template struct _LIBCPP_TYPE_VIS add_lvalue_reference {typedef _Tp& type;}; -template struct _LIBCPP_TYPE_VIS add_lvalue_reference<_Tp&> {typedef _Tp& type;}; // for older compiler -template <> struct _LIBCPP_TYPE_VIS add_lvalue_reference {typedef void type;}; -template <> struct _LIBCPP_TYPE_VIS add_lvalue_reference {typedef const void type;}; -template <> struct _LIBCPP_TYPE_VIS add_lvalue_reference {typedef volatile void type;}; -template <> struct _LIBCPP_TYPE_VIS add_lvalue_reference {typedef const volatile void type;}; +template struct _LIBCPP_TYPE_VIS_ONLY add_lvalue_reference {typedef _Tp& type;}; +template struct _LIBCPP_TYPE_VIS_ONLY add_lvalue_reference<_Tp&> {typedef _Tp& type;}; // for older compiler +template <> struct _LIBCPP_TYPE_VIS_ONLY add_lvalue_reference {typedef void type;}; +template <> struct _LIBCPP_TYPE_VIS_ONLY add_lvalue_reference {typedef const void type;}; +template <> struct _LIBCPP_TYPE_VIS_ONLY add_lvalue_reference {typedef volatile void type;}; +template <> struct _LIBCPP_TYPE_VIS_ONLY add_lvalue_reference {typedef const volatile void type;}; #if _LIBCPP_STD_VER > 11 template using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; @@ -583,11 +583,11 @@ template using add_lvalue_reference_t = typename add_lvalue_referenc #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -template struct _LIBCPP_TYPE_VIS add_rvalue_reference {typedef _Tp&& type;}; -template <> struct _LIBCPP_TYPE_VIS add_rvalue_reference {typedef void type;}; -template <> struct _LIBCPP_TYPE_VIS add_rvalue_reference {typedef const void type;}; -template <> struct _LIBCPP_TYPE_VIS add_rvalue_reference {typedef volatile void type;}; -template <> struct _LIBCPP_TYPE_VIS add_rvalue_reference {typedef const volatile void type;}; +template struct _LIBCPP_TYPE_VIS_ONLY add_rvalue_reference {typedef _Tp&& type;}; +template <> struct _LIBCPP_TYPE_VIS_ONLY add_rvalue_reference {typedef void type;}; +template <> struct _LIBCPP_TYPE_VIS_ONLY add_rvalue_reference {typedef const void type;}; +template <> struct _LIBCPP_TYPE_VIS_ONLY add_rvalue_reference {typedef volatile void type;}; +template <> struct _LIBCPP_TYPE_VIS_ONLY add_rvalue_reference {typedef const volatile void type;}; #if _LIBCPP_STD_VER > 11 template using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; @@ -616,11 +616,11 @@ struct __any // remove_pointer -template struct _LIBCPP_TYPE_VIS remove_pointer {typedef _Tp type;}; -template struct _LIBCPP_TYPE_VIS remove_pointer<_Tp*> {typedef _Tp type;}; -template struct _LIBCPP_TYPE_VIS remove_pointer<_Tp* const> {typedef _Tp type;}; -template struct _LIBCPP_TYPE_VIS remove_pointer<_Tp* volatile> {typedef _Tp type;}; -template struct _LIBCPP_TYPE_VIS remove_pointer<_Tp* const volatile> {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_pointer {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_pointer<_Tp*> {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_pointer<_Tp* const> {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_pointer<_Tp* volatile> {typedef _Tp type;}; +template struct _LIBCPP_TYPE_VIS_ONLY remove_pointer<_Tp* const volatile> {typedef _Tp type;}; #if _LIBCPP_STD_VER > 11 template using remove_pointer_t = typename remove_pointer<_Tp>::type; @@ -628,7 +628,7 @@ template using remove_pointer_t = typename remove_pointer<_Tp>::type // add_pointer -template struct _LIBCPP_TYPE_VIS add_pointer +template struct _LIBCPP_TYPE_VIS_ONLY add_pointer {typedef typename remove_reference<_Tp>::type* type;}; #if _LIBCPP_STD_VER > 11 @@ -648,7 +648,7 @@ struct __is_signed : public ___is_signed<_Tp> {}; template struct __is_signed<_Tp, false> : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_signed : public __is_signed<_Tp> {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_signed : public __is_signed<_Tp> {}; // is_unsigned @@ -663,37 +663,37 @@ struct __is_unsigned : public ___is_unsigned<_Tp> {}; template struct __is_unsigned<_Tp, false> : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_unsigned : public __is_unsigned<_Tp> {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_unsigned : public __is_unsigned<_Tp> {}; // rank -template struct _LIBCPP_TYPE_VIS rank +template struct _LIBCPP_TYPE_VIS_ONLY rank : public integral_constant {}; -template struct _LIBCPP_TYPE_VIS rank<_Tp[]> +template struct _LIBCPP_TYPE_VIS_ONLY rank<_Tp[]> : public integral_constant::value + 1> {}; -template struct _LIBCPP_TYPE_VIS rank<_Tp[_Np]> +template struct _LIBCPP_TYPE_VIS_ONLY rank<_Tp[_Np]> : public integral_constant::value + 1> {}; // extent -template struct _LIBCPP_TYPE_VIS extent +template struct _LIBCPP_TYPE_VIS_ONLY extent : public integral_constant {}; -template struct _LIBCPP_TYPE_VIS extent<_Tp[], 0> +template struct _LIBCPP_TYPE_VIS_ONLY extent<_Tp[], 0> : public integral_constant {}; -template struct _LIBCPP_TYPE_VIS extent<_Tp[], _Ip> +template struct _LIBCPP_TYPE_VIS_ONLY extent<_Tp[], _Ip> : public integral_constant::value> {}; -template struct _LIBCPP_TYPE_VIS extent<_Tp[_Np], 0> +template struct _LIBCPP_TYPE_VIS_ONLY extent<_Tp[_Np], 0> : public integral_constant {}; -template struct _LIBCPP_TYPE_VIS extent<_Tp[_Np], _Ip> +template struct _LIBCPP_TYPE_VIS_ONLY extent<_Tp[_Np], _Ip> : public integral_constant::value> {}; // remove_extent -template struct _LIBCPP_TYPE_VIS remove_extent +template struct _LIBCPP_TYPE_VIS_ONLY remove_extent {typedef _Tp type;}; -template struct _LIBCPP_TYPE_VIS remove_extent<_Tp[]> +template struct _LIBCPP_TYPE_VIS_ONLY remove_extent<_Tp[]> {typedef _Tp type;}; -template struct _LIBCPP_TYPE_VIS remove_extent<_Tp[_Np]> +template struct _LIBCPP_TYPE_VIS_ONLY remove_extent<_Tp[_Np]> {typedef _Tp type;}; #if _LIBCPP_STD_VER > 11 @@ -702,11 +702,11 @@ template using remove_extent_t = typename remove_extent<_Tp>::type; // remove_all_extents -template struct _LIBCPP_TYPE_VIS remove_all_extents +template struct _LIBCPP_TYPE_VIS_ONLY remove_all_extents {typedef _Tp type;}; -template struct _LIBCPP_TYPE_VIS remove_all_extents<_Tp[]> +template struct _LIBCPP_TYPE_VIS_ONLY remove_all_extents<_Tp[]> {typedef typename remove_all_extents<_Tp>::type type;}; -template struct _LIBCPP_TYPE_VIS remove_all_extents<_Tp[_Np]> +template struct _LIBCPP_TYPE_VIS_ONLY remove_all_extents<_Tp[_Np]> {typedef typename remove_all_extents<_Tp>::type type;}; #if _LIBCPP_STD_VER > 11 @@ -726,14 +726,14 @@ struct __libcpp_abstract : public integral_constant struct __libcpp_abstract<_Tp, false> : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_abstract : public __libcpp_abstract<_Tp> {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_abstract : public __libcpp_abstract<_Tp> {}; // is_base_of #ifdef _LIBCPP_HAS_IS_BASE_OF template -struct _LIBCPP_TYPE_VIS is_base_of +struct _LIBCPP_TYPE_VIS_ONLY is_base_of : public integral_constant {}; #else // __has_feature(is_base_of) @@ -757,7 +757,7 @@ template __two __test(...); } template -struct _LIBCPP_TYPE_VIS is_base_of +struct _LIBCPP_TYPE_VIS_ONLY is_base_of : public integral_constant::value && sizeof(__is_base_of_imp::__test<_Bp, _Dp>(0)) == 2> {}; @@ -767,7 +767,7 @@ struct _LIBCPP_TYPE_VIS is_base_of #if __has_feature(is_convertible_to) -template struct _LIBCPP_TYPE_VIS is_convertible +template struct _LIBCPP_TYPE_VIS_ONLY is_convertible : public integral_constant::value> {}; @@ -873,7 +873,7 @@ template struct __is_convertible<_T1, _T2, 1, 3> : public template struct __is_convertible<_T1, _T2, 2, 3> : public false_type {}; template struct __is_convertible<_T1, _T2, 3, 3> : public true_type {}; -template struct _LIBCPP_TYPE_VIS is_convertible +template struct _LIBCPP_TYPE_VIS_ONLY is_convertible : public __is_convertible<_T1, _T2> { static const size_t __complete_check1 = __is_convertible_check<_T1>::__v; @@ -887,7 +887,7 @@ template struct _LIBCPP_TYPE_VIS is_convertible #if __has_feature(is_empty) template -struct _LIBCPP_TYPE_VIS is_empty +struct _LIBCPP_TYPE_VIS_ONLY is_empty : public integral_constant {}; #else // __has_feature(is_empty) @@ -909,7 +909,7 @@ struct __libcpp_empty : public integral_constant) template struct __libcpp_empty<_Tp, false> : public false_type {}; -template struct _LIBCPP_TYPE_VIS is_empty : public __libcpp_empty<_Tp> {}; +template struct _LIBCPP_TYPE_VIS_ONLY is_empty : public __libcpp_empty<_Tp> {}; #endif // __has_feature(is_empty) @@ -918,7 +918,7 @@ template struct _LIBCPP_TYPE_VIS is_empty : public __libcpp_empty<_T #if __has_feature(is_polymorphic) template -struct _LIBCPP_TYPE_VIS is_polymorphic +struct _LIBCPP_TYPE_VIS_ONLY is_polymorphic : public integral_constant {}; #else @@ -928,7 +928,7 @@ template char &__is_polymorphic_impl( int>::type); template __two &__is_polymorphic_impl(...); -template struct _LIBCPP_TYPE_VIS is_polymorphic +template struct _LIBCPP_TYPE_VIS_ONLY is_polymorphic : public integral_constant(0)) == 1> {}; #endif // __has_feature(is_polymorphic) @@ -937,19 +937,19 @@ template struct _LIBCPP_TYPE_VIS is_polymorphic #if __has_feature(has_virtual_destructor) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) -template struct _LIBCPP_TYPE_VIS has_virtual_destructor +template struct _LIBCPP_TYPE_VIS_ONLY has_virtual_destructor : public integral_constant {}; #else // _LIBCPP_HAS_TYPE_TRAITS -template struct _LIBCPP_TYPE_VIS has_virtual_destructor +template struct _LIBCPP_TYPE_VIS_ONLY has_virtual_destructor : public false_type {}; #endif // _LIBCPP_HAS_TYPE_TRAITS // alignment_of -template struct _LIBCPP_TYPE_VIS alignment_of +template struct _LIBCPP_TYPE_VIS_ONLY alignment_of : public integral_constant {}; // aligned_storage @@ -1037,7 +1037,7 @@ struct __find_max_align<__type_list<_Hp, _Tp>, _Len> : public integral_constant::value>::value> {}; template ::value> -struct _LIBCPP_TYPE_VIS aligned_storage +struct _LIBCPP_TYPE_VIS_ONLY aligned_storage { typedef typename __find_pod<__all_types, _Align>::type _Aligner; static_assert(!is_void<_Aligner>::value, ""); @@ -1055,7 +1055,7 @@ template ::valu #define _CREATE_ALIGNED_STORAGE_SPECIALIZATION(n) \ template \ -struct _LIBCPP_TYPE_VIS aligned_storage<_Len, n>\ +struct _LIBCPP_TYPE_VIS_ONLY aligned_storage<_Len, n>\ {\ struct _ALIGNAS(n) type\ {\ @@ -1274,7 +1274,7 @@ template <> struct __make_signed< signed long long, true> {typedef long long ty template <> struct __make_signed {typedef long long type;}; template -struct _LIBCPP_TYPE_VIS make_signed +struct _LIBCPP_TYPE_VIS_ONLY make_signed { typedef typename __apply_cv<_Tp, typename __make_signed::type>::type>::type type; }; @@ -1303,7 +1303,7 @@ template <> struct __make_unsigned< signed long long, true> {typedef unsigned l template <> struct __make_unsigned {typedef unsigned long long type;}; template -struct _LIBCPP_TYPE_VIS make_unsigned +struct _LIBCPP_TYPE_VIS_ONLY make_unsigned { typedef typename __apply_cv<_Tp, typename __make_unsigned::type>::type>::type type; }; @@ -1315,21 +1315,21 @@ template using make_unsigned_t = typename make_unsigned<_Tp>::type; #ifdef _LIBCPP_HAS_NO_VARIADICS template -struct _LIBCPP_TYPE_VIS common_type +struct _LIBCPP_TYPE_VIS_ONLY common_type { public: typedef typename common_type::type, V>::type type; }; template -struct _LIBCPP_TYPE_VIS common_type<_Tp, void, void> +struct _LIBCPP_TYPE_VIS_ONLY common_type<_Tp, void, void> { public: typedef _Tp type; }; template -struct _LIBCPP_TYPE_VIS common_type<_Tp, _Up, void> +struct _LIBCPP_TYPE_VIS_ONLY common_type<_Tp, _Up, void> { private: #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES @@ -1348,13 +1348,13 @@ public: template struct common_type; template -struct _LIBCPP_TYPE_VIS common_type<_Tp> +struct _LIBCPP_TYPE_VIS_ONLY common_type<_Tp> { typedef _Tp type; }; template -struct _LIBCPP_TYPE_VIS common_type<_Tp, _Up> +struct _LIBCPP_TYPE_VIS_ONLY common_type<_Tp, _Up> { private: static _Tp&& __t(); @@ -1365,7 +1365,7 @@ public: }; template -struct _LIBCPP_TYPE_VIS common_type<_Tp, _Up, _Vp...> +struct _LIBCPP_TYPE_VIS_ONLY common_type<_Tp, _Up, _Vp...> { typedef typename common_type::type, _Vp...>::type type; }; @@ -1413,13 +1413,13 @@ struct is_assignable // is_copy_assignable -template struct _LIBCPP_TYPE_VIS is_copy_assignable +template struct _LIBCPP_TYPE_VIS_ONLY is_copy_assignable : public is_assignable::type, const typename add_lvalue_reference<_Tp>::type> {}; // is_move_assignable -template struct _LIBCPP_TYPE_VIS is_move_assignable +template struct _LIBCPP_TYPE_VIS_ONLY is_move_assignable #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES : public is_assignable::type, const typename add_rvalue_reference<_Tp>::type> {}; @@ -1538,7 +1538,7 @@ public: #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES template -struct _LIBCPP_TYPE_VIS decay +struct _LIBCPP_TYPE_VIS_ONLY decay { private: typedef typename remove_reference<_Tp>::type _Up; @@ -1921,7 +1921,7 @@ class __result_of<_Fn(_Tp, _A0, _A1, _A2), false, true> // _Fn must be member p // result_of template -class _LIBCPP_TYPE_VIS result_of<_Fn()> +class _LIBCPP_TYPE_VIS_ONLY result_of<_Fn()> : public __result_of<_Fn(), is_class::type>::value || is_function::type>::value, @@ -1931,7 +1931,7 @@ class _LIBCPP_TYPE_VIS result_of<_Fn()> }; template -class _LIBCPP_TYPE_VIS result_of<_Fn(_A0)> +class _LIBCPP_TYPE_VIS_ONLY result_of<_Fn(_A0)> : public __result_of<_Fn(_A0), is_class::type>::value || is_function::type>::value, @@ -1941,7 +1941,7 @@ class _LIBCPP_TYPE_VIS result_of<_Fn(_A0)> }; template -class _LIBCPP_TYPE_VIS result_of<_Fn(_A0, _A1)> +class _LIBCPP_TYPE_VIS_ONLY result_of<_Fn(_A0, _A1)> : public __result_of<_Fn(_A0, _A1), is_class::type>::value || is_function::type>::value, @@ -1951,7 +1951,7 @@ class _LIBCPP_TYPE_VIS result_of<_Fn(_A0, _A1)> }; template -class _LIBCPP_TYPE_VIS result_of<_Fn(_A0, _A1, _A2)> +class _LIBCPP_TYPE_VIS_ONLY result_of<_Fn(_A0, _A1, _A2)> : public __result_of<_Fn(_A0, _A1, _A2), is_class::type>::value || is_function::type>::value, @@ -2056,7 +2056,7 @@ struct __contains_void<_A0, _Args...> // is_constructible entry point template -struct _LIBCPP_TYPE_VIS is_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_constructible : public __is_constructible_void_check<__contains_void<_Tp, _Args...>::value || is_abstract<_Tp>::value, _Tp, _Args...> @@ -2204,7 +2204,7 @@ struct __nat {}; template -struct _LIBCPP_TYPE_VIS is_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_constructible : public __is_constructible2_void_check::value || is_abstract<_Tp>::value || is_function<_Tp>::value @@ -2214,7 +2214,7 @@ struct _LIBCPP_TYPE_VIS is_constructible {}; template -struct _LIBCPP_TYPE_VIS is_constructible<_Tp, __is_construct::__nat, __is_construct::__nat> +struct _LIBCPP_TYPE_VIS_ONLY is_constructible<_Tp, __is_construct::__nat, __is_construct::__nat> : public __is_constructible0_void_check::value || is_abstract<_Tp>::value || is_function<_Tp>::value, @@ -2222,7 +2222,7 @@ struct _LIBCPP_TYPE_VIS is_constructible<_Tp, __is_construct::__nat, __is_constr {}; template -struct _LIBCPP_TYPE_VIS is_constructible<_Tp, _A0, __is_construct::__nat> +struct _LIBCPP_TYPE_VIS_ONLY is_constructible<_Tp, _A0, __is_construct::__nat> : public __is_constructible1_void_check::value || is_abstract<_Tp>::value || is_function<_Tp>::value @@ -2270,21 +2270,21 @@ struct __is_constructible2_imp // is_default_constructible template -struct _LIBCPP_TYPE_VIS is_default_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_default_constructible : public is_constructible<_Tp> {}; // is_copy_constructible template -struct _LIBCPP_TYPE_VIS is_copy_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_copy_constructible : public is_constructible<_Tp, const typename add_lvalue_reference<_Tp>::type> {}; // is_move_constructible template -struct _LIBCPP_TYPE_VIS is_move_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_move_constructible #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES : public is_constructible<_Tp, typename add_rvalue_reference<_Tp>::type> #else @@ -2299,7 +2299,7 @@ struct _LIBCPP_TYPE_VIS is_move_constructible #if __has_feature(is_trivially_constructible) template -struct _LIBCPP_TYPE_VIS is_trivially_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible : integral_constant { }; @@ -2307,13 +2307,13 @@ struct _LIBCPP_TYPE_VIS is_trivially_constructible #else // !__has_feature(is_trivially_constructible) template -struct _LIBCPP_TYPE_VIS is_trivially_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible : false_type { }; template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp> +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp> #if __has_feature(has_trivial_constructor) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant #else @@ -2324,22 +2324,22 @@ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp> template #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&&> +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, _Tp&&> #else -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, _Tp> #endif : integral_constant::value> { }; template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, const _Tp&> +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, const _Tp&> : integral_constant::value> { }; template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&> +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, _Tp&> : integral_constant::value> { }; @@ -2350,7 +2350,7 @@ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&> template -struct _LIBCPP_TYPE_VIS is_trivially_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible : false_type { }; @@ -2358,28 +2358,28 @@ struct _LIBCPP_TYPE_VIS is_trivially_constructible #if __has_feature(is_trivially_constructible) template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, __is_construct::__nat, +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, __is_construct::__nat, __is_construct::__nat> : integral_constant { }; template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp, +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, _Tp, __is_construct::__nat> : integral_constant { }; template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, const _Tp&, +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, const _Tp&, __is_construct::__nat> : integral_constant { }; template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&, +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, _Tp&, __is_construct::__nat> : integral_constant { @@ -2388,28 +2388,28 @@ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&, #else // !__has_feature(is_trivially_constructible) template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, __is_construct::__nat, +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, __is_construct::__nat, __is_construct::__nat> : integral_constant::value> { }; template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp, +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, _Tp, __is_construct::__nat> : integral_constant::value> { }; template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, const _Tp&, +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, const _Tp&, __is_construct::__nat> : integral_constant::value> { }; template -struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&, +struct _LIBCPP_TYPE_VIS_ONLY is_trivially_constructible<_Tp, _Tp&, __is_construct::__nat> : integral_constant::value> { @@ -2421,19 +2421,19 @@ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&, // is_trivially_default_constructible -template struct _LIBCPP_TYPE_VIS is_trivially_default_constructible +template struct _LIBCPP_TYPE_VIS_ONLY is_trivially_default_constructible : public is_trivially_constructible<_Tp> {}; // is_trivially_copy_constructible -template struct _LIBCPP_TYPE_VIS is_trivially_copy_constructible +template struct _LIBCPP_TYPE_VIS_ONLY is_trivially_copy_constructible : public is_trivially_constructible<_Tp, const typename add_lvalue_reference<_Tp>::type> {}; // is_trivially_move_constructible -template struct _LIBCPP_TYPE_VIS is_trivially_move_constructible +template struct _LIBCPP_TYPE_VIS_ONLY is_trivially_move_constructible #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES : public is_trivially_constructible<_Tp, typename add_rvalue_reference<_Tp>::type> #else @@ -2481,14 +2481,14 @@ struct is_trivially_assignable<_Tp&, _Tp&&> // is_trivially_copy_assignable -template struct _LIBCPP_TYPE_VIS is_trivially_copy_assignable +template struct _LIBCPP_TYPE_VIS_ONLY is_trivially_copy_assignable : public is_trivially_assignable::type, const typename add_lvalue_reference<_Tp>::type> {}; // is_trivially_move_assignable -template struct _LIBCPP_TYPE_VIS is_trivially_move_assignable +template struct _LIBCPP_TYPE_VIS_ONLY is_trivially_move_assignable : public is_trivially_assignable::type, #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES typename add_rvalue_reference<_Tp>::type> @@ -2501,7 +2501,7 @@ template struct _LIBCPP_TYPE_VIS is_trivially_move_assignable #if __has_feature(has_trivial_destructor) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) -template struct _LIBCPP_TYPE_VIS is_trivially_destructible +template struct _LIBCPP_TYPE_VIS_ONLY is_trivially_destructible : public integral_constant {}; #else // _LIBCPP_HAS_TYPE_TRAITS @@ -2510,7 +2510,7 @@ template struct __libcpp_trivial_destructor : public integral_constant::value || is_reference<_Tp>::value> {}; -template struct _LIBCPP_TYPE_VIS is_trivially_destructible +template struct _LIBCPP_TYPE_VIS_ONLY is_trivially_destructible : public __libcpp_trivial_destructor::type> {}; #endif // _LIBCPP_HAS_TYPE_TRAITS @@ -2536,13 +2536,13 @@ struct __is_nothrow_constructible }; template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible : __is_nothrow_constructible::value, _Tp, _Args...> { }; template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp[_Ns]> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible<_Tp[_Ns]> : __is_nothrow_constructible::value, _Tp> { }; @@ -2550,13 +2550,13 @@ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp[_Ns]> #else // __has_feature(cxx_noexcept) template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible : false_type { }; template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible<_Tp> #if __has_feature(has_nothrow_constructor) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant #else @@ -2567,9 +2567,9 @@ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp> template #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp&&> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible<_Tp, _Tp&&> #else -struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible<_Tp, _Tp> #endif #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant @@ -2580,7 +2580,7 @@ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp> }; template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, const _Tp&> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible<_Tp, const _Tp&> #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant #else @@ -2590,7 +2590,7 @@ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, const _Tp&> }; template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp&> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible<_Tp, _Tp&> #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant #else @@ -2605,13 +2605,13 @@ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp&> template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible : false_type { }; template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, __is_construct::__nat, +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible<_Tp, __is_construct::__nat, __is_construct::__nat> #if __has_feature(has_nothrow_constructor) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant @@ -2622,7 +2622,7 @@ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, __is_construct::__nat, }; template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp, +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible<_Tp, _Tp, __is_construct::__nat> #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant @@ -2633,7 +2633,7 @@ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp, }; template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, const _Tp&, +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible<_Tp, const _Tp&, __is_construct::__nat> #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant @@ -2644,7 +2644,7 @@ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, const _Tp&, }; template -struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp&, +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible<_Tp, _Tp&, __is_construct::__nat> #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant @@ -2658,19 +2658,19 @@ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp&, // is_nothrow_default_constructible -template struct _LIBCPP_TYPE_VIS is_nothrow_default_constructible +template struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_default_constructible : public is_nothrow_constructible<_Tp> {}; // is_nothrow_copy_constructible -template struct _LIBCPP_TYPE_VIS is_nothrow_copy_constructible +template struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_copy_constructible : public is_nothrow_constructible<_Tp, const typename add_lvalue_reference<_Tp>::type> {}; // is_nothrow_move_constructible -template struct _LIBCPP_TYPE_VIS is_nothrow_move_constructible +template struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_move_constructible #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES : public is_nothrow_constructible<_Tp, typename add_rvalue_reference<_Tp>::type> #else @@ -2697,7 +2697,7 @@ struct __is_nothrow_assignable }; template -struct _LIBCPP_TYPE_VIS is_nothrow_assignable +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_assignable : public __is_nothrow_assignable::value, _Tp, _Arg> { }; @@ -2705,11 +2705,11 @@ struct _LIBCPP_TYPE_VIS is_nothrow_assignable #else // __has_feature(cxx_noexcept) template -struct _LIBCPP_TYPE_VIS is_nothrow_assignable +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_assignable : public false_type {}; template -struct _LIBCPP_TYPE_VIS is_nothrow_assignable<_Tp&, _Tp> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_assignable<_Tp&, _Tp> #if __has_feature(has_nothrow_assign) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant {}; #else @@ -2717,7 +2717,7 @@ struct _LIBCPP_TYPE_VIS is_nothrow_assignable<_Tp&, _Tp> #endif template -struct _LIBCPP_TYPE_VIS is_nothrow_assignable<_Tp&, _Tp&> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_assignable<_Tp&, _Tp&> #if __has_feature(has_nothrow_assign) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant {}; #else @@ -2725,7 +2725,7 @@ struct _LIBCPP_TYPE_VIS is_nothrow_assignable<_Tp&, _Tp&> #endif template -struct _LIBCPP_TYPE_VIS is_nothrow_assignable<_Tp&, const _Tp&> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_assignable<_Tp&, const _Tp&> #if __has_feature(has_nothrow_assign) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) : integral_constant {}; #else @@ -2748,14 +2748,14 @@ struct is_nothrow_assignable<_Tp&, _Tp&&> // is_nothrow_copy_assignable -template struct _LIBCPP_TYPE_VIS is_nothrow_copy_assignable +template struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_copy_assignable : public is_nothrow_assignable::type, const typename add_lvalue_reference<_Tp>::type> {}; // is_nothrow_move_assignable -template struct _LIBCPP_TYPE_VIS is_nothrow_move_assignable +template struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_move_assignable : public is_nothrow_assignable::type, #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES typename add_rvalue_reference<_Tp>::type> @@ -2783,19 +2783,19 @@ struct __is_nothrow_destructible }; template -struct _LIBCPP_TYPE_VIS is_nothrow_destructible +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_destructible : public __is_nothrow_destructible::value, _Tp> { }; template -struct _LIBCPP_TYPE_VIS is_nothrow_destructible<_Tp[_Ns]> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_destructible<_Tp[_Ns]> : public is_nothrow_destructible<_Tp> { }; template -struct _LIBCPP_TYPE_VIS is_nothrow_destructible<_Tp&> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_destructible<_Tp&> : public true_type { }; @@ -2803,7 +2803,7 @@ struct _LIBCPP_TYPE_VIS is_nothrow_destructible<_Tp&> #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template -struct _LIBCPP_TYPE_VIS is_nothrow_destructible<_Tp&&> +struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_destructible<_Tp&&> : public true_type { }; @@ -2816,7 +2816,7 @@ template struct __libcpp_nothrow_destructor : public integral_constant::value || is_reference<_Tp>::value> {}; -template struct _LIBCPP_TYPE_VIS is_nothrow_destructible +template struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_destructible : public __libcpp_nothrow_destructor::type> {}; #endif @@ -2825,12 +2825,12 @@ template struct _LIBCPP_TYPE_VIS is_nothrow_destructible #if __has_feature(is_pod) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) -template struct _LIBCPP_TYPE_VIS is_pod +template struct _LIBCPP_TYPE_VIS_ONLY is_pod : public integral_constant {}; #else // _LIBCPP_HAS_TYPE_TRAITS -template struct _LIBCPP_TYPE_VIS is_pod +template struct _LIBCPP_TYPE_VIS_ONLY is_pod : public integral_constant::value && is_trivially_copy_constructible<_Tp>::value && is_trivially_copy_assignable<_Tp>::value && @@ -2840,7 +2840,7 @@ template struct _LIBCPP_TYPE_VIS is_pod // is_literal_type; -template struct _LIBCPP_TYPE_VIS is_literal_type +template struct _LIBCPP_TYPE_VIS_ONLY is_literal_type #if __has_feature(is_literal) : public integral_constant #else @@ -2851,7 +2851,7 @@ template struct _LIBCPP_TYPE_VIS is_literal_type // is_standard_layout; -template struct _LIBCPP_TYPE_VIS is_standard_layout +template struct _LIBCPP_TYPE_VIS_ONLY is_standard_layout #if __has_feature(is_standard_layout) : public integral_constant #else @@ -2861,7 +2861,7 @@ template struct _LIBCPP_TYPE_VIS is_standard_layout // is_trivially_copyable; -template struct _LIBCPP_TYPE_VIS is_trivially_copyable +template struct _LIBCPP_TYPE_VIS_ONLY is_trivially_copyable #if __has_feature(is_trivially_copyable) : public integral_constant #else @@ -2871,7 +2871,7 @@ template struct _LIBCPP_TYPE_VIS is_trivially_copyable // is_trivial; -template struct _LIBCPP_TYPE_VIS is_trivial +template struct _LIBCPP_TYPE_VIS_ONLY is_trivial #if __has_feature(is_trivial) : public integral_constant #else @@ -3128,7 +3128,7 @@ struct __invoke_of }; template -class _LIBCPP_TYPE_VIS result_of<_Fp(_Args...)> +class _LIBCPP_TYPE_VIS_ONLY result_of<_Fp(_Args...)> : public __invoke_of<_Fp, _Args...> { }; diff --git a/libcxx/include/typeindex b/libcxx/include/typeindex index 67462b742493..d4d6ca96ba4d 100644 --- a/libcxx/include/typeindex +++ b/libcxx/include/typeindex @@ -55,7 +55,7 @@ struct hash _LIBCPP_BEGIN_NAMESPACE_STD -class _LIBCPP_TYPE_VIS type_index +class _LIBCPP_TYPE_VIS_ONLY type_index { const type_info* __t_; public: @@ -87,10 +87,10 @@ public: const char* name() const _NOEXCEPT {return __t_->name();} }; -template struct _LIBCPP_TYPE_VIS hash; +template struct _LIBCPP_TYPE_VIS_ONLY hash; template <> -struct _LIBCPP_TYPE_VIS hash +struct _LIBCPP_TYPE_VIS_ONLY hash : public unary_function { _LIBCPP_INLINE_VISIBILITY diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map index eebf2f5ea612..7b5bdb6499e8 100644 --- a/libcxx/include/unordered_map +++ b/libcxx/include/unordered_map @@ -494,7 +494,7 @@ public: }; template -class _LIBCPP_TYPE_VIS __hash_map_iterator +class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator { _HashIterator __i_; @@ -542,15 +542,15 @@ public: bool operator!=(const __hash_map_iterator& __x, const __hash_map_iterator& __y) {return __x.__i_ != __y.__i_;} - template friend class _LIBCPP_TYPE_VIS unordered_map; - template friend class _LIBCPP_TYPE_VIS unordered_multimap; - template friend class _LIBCPP_TYPE_VIS __hash_const_iterator; - template friend class _LIBCPP_TYPE_VIS __hash_const_local_iterator; - template friend class _LIBCPP_TYPE_VIS __hash_map_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; + template friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; }; template -class _LIBCPP_TYPE_VIS __hash_map_const_iterator +class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator { _HashIterator __i_; @@ -603,15 +603,15 @@ public: bool operator!=(const __hash_map_const_iterator& __x, const __hash_map_const_iterator& __y) {return __x.__i_ != __y.__i_;} - template friend class _LIBCPP_TYPE_VIS unordered_map; - template friend class _LIBCPP_TYPE_VIS unordered_multimap; - template friend class _LIBCPP_TYPE_VIS __hash_const_iterator; - template friend class _LIBCPP_TYPE_VIS __hash_const_local_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; + template friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; + template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; }; template , class _Pred = equal_to<_Key>, class _Alloc = allocator > > -class _LIBCPP_TYPE_VIS unordered_map +class _LIBCPP_TYPE_VIS_ONLY unordered_map { public: // types @@ -1366,7 +1366,7 @@ operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, template , class _Pred = equal_to<_Key>, class _Alloc = allocator > > -class _LIBCPP_TYPE_VIS unordered_multimap +class _LIBCPP_TYPE_VIS_ONLY unordered_multimap { public: // types diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set index 8be36df6d23d..b5b734784b42 100644 --- a/libcxx/include/unordered_set +++ b/libcxx/include/unordered_set @@ -313,7 +313,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template , class _Pred = equal_to<_Value>, class _Alloc = allocator<_Value> > -class _LIBCPP_TYPE_VIS unordered_set +class _LIBCPP_TYPE_VIS_ONLY unordered_set { public: // types @@ -819,7 +819,7 @@ operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, template , class _Pred = equal_to<_Value>, class _Alloc = allocator<_Value> > -class _LIBCPP_TYPE_VIS unordered_multiset +class _LIBCPP_TYPE_VIS_ONLY unordered_multiset { public: // types diff --git a/libcxx/include/utility b/libcxx/include/utility index d36cf9dd7661..1e1ce5876e66 100644 --- a/libcxx/include/utility +++ b/libcxx/include/utility @@ -237,7 +237,7 @@ move_if_noexcept(_Tp& __x) _NOEXCEPT return _VSTD::move(__x); } -struct _LIBCPP_TYPE_VIS piecewise_construct_t { }; +struct _LIBCPP_TYPE_VIS_ONLY piecewise_construct_t { }; #if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_UTILITY) extern const piecewise_construct_t piecewise_construct;// = piecewise_construct_t(); #else @@ -245,7 +245,7 @@ constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); #endif template -struct _LIBCPP_TYPE_VIS pair +struct _LIBCPP_TYPE_VIS_ONLY pair { typedef _T1 first_type; typedef _T2 second_type; @@ -462,7 +462,7 @@ swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -template class _LIBCPP_TYPE_VIS reference_wrapper; +template class _LIBCPP_TYPE_VIS_ONLY reference_wrapper; template struct ___make_pair_return @@ -504,36 +504,36 @@ make_pair(_T1 __x, _T2 __y) #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES template - class _LIBCPP_TYPE_VIS tuple_size > + class _LIBCPP_TYPE_VIS_ONLY tuple_size > : public integral_constant {}; template - class _LIBCPP_TYPE_VIS tuple_size > + class _LIBCPP_TYPE_VIS_ONLY tuple_size > : public integral_constant {}; template -class _LIBCPP_TYPE_VIS tuple_element<0, pair<_T1, _T2> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<0, pair<_T1, _T2> > { public: typedef _T1 type; }; template -class _LIBCPP_TYPE_VIS tuple_element<1, pair<_T1, _T2> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<1, pair<_T1, _T2> > { public: typedef _T2 type; }; template -class _LIBCPP_TYPE_VIS tuple_element<0, const pair<_T1, _T2> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<0, const pair<_T1, _T2> > { public: typedef const _T1 type; }; template -class _LIBCPP_TYPE_VIS tuple_element<1, const pair<_T1, _T2> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<1, const pair<_T1, _T2> > { public: typedef const _T2 type; @@ -669,7 +669,7 @@ constexpr _T1 && get(pair<_T2, _T1>&& __p) _NOEXCEPT #if _LIBCPP_STD_VER > 11 template -struct _LIBCPP_TYPE_VIS integer_sequence +struct _LIBCPP_TYPE_VIS_ONLY integer_sequence { typedef _Tp value_type; static_assert( is_integral<_Tp>::value, diff --git a/libcxx/include/valarray b/libcxx/include/valarray index 71c8a74edb28..d4e9015b69cb 100644 --- a/libcxx/include/valarray +++ b/libcxx/include/valarray @@ -354,9 +354,9 @@ template unspecified2 end(const valarray& v); _LIBCPP_BEGIN_NAMESPACE_STD -template class _LIBCPP_TYPE_VIS valarray; +template class _LIBCPP_TYPE_VIS_ONLY valarray; -class _LIBCPP_TYPE_VIS slice +class _LIBCPP_TYPE_VIS_ONLY slice { size_t __start_; size_t __size_; @@ -381,11 +381,11 @@ public: _LIBCPP_INLINE_VISIBILITY size_t stride() const {return __stride_;} }; -template class _LIBCPP_TYPE_VIS slice_array; +template class _LIBCPP_TYPE_VIS_ONLY slice_array; class _LIBCPP_TYPE_VIS gslice; -template class _LIBCPP_TYPE_VIS gslice_array; -template class _LIBCPP_TYPE_VIS mask_array; -template class _LIBCPP_TYPE_VIS indirect_array; +template class _LIBCPP_TYPE_VIS_ONLY gslice_array; +template class _LIBCPP_TYPE_VIS_ONLY mask_array; +template class _LIBCPP_TYPE_VIS_ONLY indirect_array; template _LIBCPP_INLINE_VISIBILITY @@ -671,7 +671,7 @@ public: _LIBCPP_INLINE_VISIBILITY size_t size() const {return __size_;} - template friend class _LIBCPP_TYPE_VIS valarray; + template friend class _LIBCPP_TYPE_VIS_ONLY valarray; }; template @@ -786,7 +786,7 @@ template struct __is_val_expr > : true_type {}; template -class _LIBCPP_TYPE_VIS valarray +class _LIBCPP_TYPE_VIS_ONLY valarray { public: typedef _Tp value_type; @@ -976,12 +976,12 @@ public: void resize(size_t __n, value_type __x = value_type()); private: - template friend class _LIBCPP_TYPE_VIS valarray; - template friend class _LIBCPP_TYPE_VIS slice_array; - template friend class _LIBCPP_TYPE_VIS gslice_array; - template friend class _LIBCPP_TYPE_VIS mask_array; + template friend class _LIBCPP_TYPE_VIS_ONLY valarray; + template friend class _LIBCPP_TYPE_VIS_ONLY slice_array; + template friend class _LIBCPP_TYPE_VIS_ONLY gslice_array; + template friend class _LIBCPP_TYPE_VIS_ONLY mask_array; template friend class __mask_expr; - template friend class _LIBCPP_TYPE_VIS indirect_array; + template friend class _LIBCPP_TYPE_VIS_ONLY indirect_array; template friend class __indirect_expr; template friend class __val_expr; @@ -1006,6 +1006,10 @@ private: end(const valarray<_Up>& __v); }; +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS valarray::valarray(size_t)) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS valarray::~valarray()) +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void valarray::resize(size_t, size_t)) + template struct _UnaryOp<_Op, valarray<_Tp> > { @@ -1091,7 +1095,7 @@ struct _BinaryOp<_Op, valarray<_Tp>, valarray<_Tp> > // slice_array template -class _LIBCPP_TYPE_VIS slice_array +class _LIBCPP_TYPE_VIS_ONLY slice_array { public: typedef _Tp value_type; @@ -1461,7 +1465,7 @@ private: // gslice_array template -class _LIBCPP_TYPE_VIS gslice_array +class _LIBCPP_TYPE_VIS_ONLY gslice_array { public: typedef _Tp value_type; @@ -1790,7 +1794,7 @@ gslice_array<_Tp>::operator=(const value_type& __x) const // mask_array template -class _LIBCPP_TYPE_VIS mask_array +class _LIBCPP_TYPE_VIS_ONLY mask_array { public: typedef _Tp value_type; @@ -2134,7 +2138,7 @@ public: // indirect_array template -class _LIBCPP_TYPE_VIS indirect_array +class _LIBCPP_TYPE_VIS_ONLY indirect_array { public: typedef _Tp value_type; @@ -2485,7 +2489,7 @@ public: _LIBCPP_INLINE_VISIBILITY size_t size() const {return __1d_.size();} - template friend class _LIBCPP_TYPE_VIS valarray; + template friend class _LIBCPP_TYPE_VIS_ONLY valarray; }; template @@ -4770,10 +4774,6 @@ end(const valarray<_Tp>& __v) return __v.__end_; } -_LIBCPP_EXTERN_TEMPLATE(valarray::valarray(size_t)) -_LIBCPP_EXTERN_TEMPLATE(valarray::~valarray()) -_LIBCPP_EXTERN_TEMPLATE(void valarray::resize(size_t, size_t)) - _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_VALARRAY diff --git a/libcxx/include/vector b/libcxx/include/vector index 0758f75bf3b7..df143445fe77 100644 --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -319,7 +319,7 @@ __vector_base_common<__b>::__throw_out_of_range() const #pragma warning( push ) #pragma warning( disable: 4231 ) #endif // _LIBCPP_MSVC -_LIBCPP_EXTERN_TEMPLATE(class __vector_base_common) +_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS __vector_base_common) #ifdef _LIBCPP_MSVC #pragma warning( pop ) #endif // _LIBCPP_MSVC @@ -474,7 +474,7 @@ __vector_base<_Tp, _Allocator>::~__vector_base() } template > -class _LIBCPP_TYPE_VIS vector +class _LIBCPP_TYPE_VIS_ONLY vector : private __vector_base<_Tp, _Allocator> { private: @@ -2011,7 +2011,7 @@ struct __has_storage_type > }; template -class _LIBCPP_TYPE_VIS vector +class _LIBCPP_TYPE_VIS_ONLY vector : private __vector_base_common { public: @@ -2369,7 +2369,7 @@ private: friend class __bit_iterator; friend class __bit_iterator; friend struct __bit_array; - friend struct _LIBCPP_TYPE_VIS hash; + friend struct _LIBCPP_TYPE_VIS_ONLY hash; }; template @@ -3152,7 +3152,7 @@ vector::__hash_code() const _NOEXCEPT } template -struct _LIBCPP_TYPE_VIS hash > +struct _LIBCPP_TYPE_VIS_ONLY hash > : public unary_function, size_t> { _LIBCPP_INLINE_VISIBILITY diff --git a/libcxx/src/iostream.cpp b/libcxx/src/iostream.cpp index f413681f0064..7102e4389e06 100644 --- a/libcxx/src/iostream.cpp +++ b/libcxx/src/iostream.cpp @@ -22,14 +22,14 @@ _ALIGNAS_TYPE (__stdinbuf ) static char __wcin [sizeof(__stdinbuf ) static char __wcout[sizeof(__stdoutbuf)]; _ALIGNAS_TYPE (__stdoutbuf) static char __wcerr[sizeof(__stdoutbuf)]; -_ALIGNAS_TYPE (istream) char cin [sizeof(istream)]; -_ALIGNAS_TYPE (ostream) char cout[sizeof(ostream)]; -_ALIGNAS_TYPE (ostream) char cerr[sizeof(ostream)]; -_ALIGNAS_TYPE (ostream) char clog[sizeof(ostream)]; -_ALIGNAS_TYPE (wistream) char wcin [sizeof(wistream)]; -_ALIGNAS_TYPE (wostream) char wcout[sizeof(wostream)]; -_ALIGNAS_TYPE (wostream) char wcerr[sizeof(wostream)]; -_ALIGNAS_TYPE (wostream) char wclog[sizeof(wostream)]; +_ALIGNAS_TYPE (istream) _LIBCPP_FUNC_VIS char cin [sizeof(istream)]; +_ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char cout[sizeof(ostream)]; +_ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char cerr[sizeof(ostream)]; +_ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char clog[sizeof(ostream)]; +_ALIGNAS_TYPE (wistream) _LIBCPP_FUNC_VIS char wcin [sizeof(wistream)]; +_ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wcout[sizeof(wostream)]; +_ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wcerr[sizeof(wostream)]; +_ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wclog[sizeof(wostream)]; ios_base::Init __start_std_streams;