forked from OSchip/llvm-project
[libcxx] Don't use dllimport for a static member in a template
This fixes clang warnings (that are treated as errors when running the test suite): libcxx/include/string:4409:59: error: definition of dllimport static field [-Werror,-Wdllimport-static-field-def] basic_string<_CharT, _Traits, _Allocator>::npos; The warning is normally not visible as long as the libc++ headers are treated as system headers. The same construct is always an error in MSVC. (One _LIBCPP_FUNC_VIS was added in2d8f23f571
, which broke DLL builds.59919c4d6b
fixed this by adding another _LIBCPP_FUNC_VIS on the declaration for consistency, but the underlying issue remained, that one can't use dllimport here.) Differential Revision: https://reviews.llvm.org/D97168
This commit is contained in:
parent
c75da238b4
commit
c793f68d9b
|
@ -640,6 +640,7 @@ typedef __char32_t char32_t;
|
|||
#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 @@ typedef __char32_t char32_t;
|
|||
# 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")))
|
||||
|
|
|
@ -805,7 +805,7 @@ private:
|
|||
__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(double __val);
|
|||
_LIBCPP_FUNC_VIS wstring to_wstring(long double __val);
|
||||
|
||||
template<class _CharT, class _Traits, class _Allocator>
|
||||
_LIBCPP_FUNC_VIS
|
||||
_LIBCPP_TEMPLATE_DATA_VIS
|
||||
const typename basic_string<_CharT, _Traits, _Allocator>::size_type
|
||||
basic_string<_CharT, _Traits, _Allocator>::npos;
|
||||
|
||||
|
|
Loading…
Reference in New Issue