Index: libcxx/include/__config =================================================================== --- libcxx/include/__config +++ libcxx/include/__config @@ -640,6 +640,7 @@ #define _LIBCPP_HIDDEN #define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS #define _LIBCPP_TEMPLATE_VIS +#define _LIBCPP_TEMPLATE_DATA_VIS #define _LIBCPP_ENUM_VIS #endif // defined(_LIBCPP_OBJECT_FORMAT_COFF) @@ -689,6 +690,14 @@ # endif #endif +#ifndef _LIBCPP_TEMPLATE_DATA_VIS +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# define _LIBCPP_TEMPLATE_DATA_VIS __attribute__ ((__visibility__("default"))) +# else +# define _LIBCPP_TEMPLATE_DATA_VIS +# endif +#endif + #ifndef _LIBCPP_EXPORTED_FROM_ABI # if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) # define _LIBCPP_EXPORTED_FROM_ABI __attribute__((__visibility__("default"))) Index: libcxx/include/string =================================================================== --- libcxx/include/string +++ libcxx/include/string @@ -805,7 +805,7 @@ __compressed_pair<__rep, allocator_type> __r_; public: - _LIBCPP_FUNC_VIS + _LIBCPP_TEMPLATE_DATA_VIS static const size_type npos = -1; _LIBCPP_INLINE_VISIBILITY basic_string() @@ -4404,7 +4404,7 @@ _LIBCPP_FUNC_VIS wstring to_wstring(long double __val); template -_LIBCPP_FUNC_VIS +_LIBCPP_TEMPLATE_DATA_VIS const typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::npos;