Fix clang warning about ignoring __declspec(dllexport) on basic_data<void> template instantitation definition (#2220)

This commit is contained in:
denchat
2021-04-12 23:31:44 +07:00
committed by GitHub
parent aec504344a
commit 42eccac454
3 changed files with 6 additions and 6 deletions

View File

@ -223,8 +223,8 @@
#ifndef FMT_EXTERN_TEMPLATE_API #ifndef FMT_EXTERN_TEMPLATE_API
# define FMT_EXTERN_TEMPLATE_API # define FMT_EXTERN_TEMPLATE_API
#endif #endif
#ifndef FMT_INSTANTIATION_DEF_API #ifndef FMT_INSTANTIATION_DECL_API
# define FMT_INSTANTIATION_DEF_API FMT_API # define FMT_INSTANTIATION_DECL_API FMT_API
#endif #endif
#ifndef FMT_HEADER_ONLY #ifndef FMT_HEADER_ONLY

View File

@ -995,9 +995,7 @@ FMT_INLINE uint16_t bsr2log10(int bsr) {
return data[bsr]; return data[bsr];
} }
#ifndef FMT_EXPORTED FMT_EXTERN template struct FMT_INSTANTIATION_DECL_API basic_data<void>;
FMT_EXTERN template struct basic_data<void>;
#endif
// This is a struct rather than an alias to avoid shadowing warnings in gcc. // This is a struct rather than an alias to avoid shadowing warnings in gcc.
struct data : basic_data<> {}; struct data : basic_data<> {};

View File

@ -55,7 +55,9 @@ vformat_to(buffer<char>&, string_view,
type_identity_t<char>>>); type_identity_t<char>>>);
} // namespace detail } // namespace detail
template struct FMT_INSTANTIATION_DEF_API detail::basic_data<void>; // Clang doesn't allow dllexport on template instantiation definitions (LLVM
// D61118).
template struct detail::basic_data<void>;
// Workaround a bug in MSVC2013 that prevents instantiation of format_float. // Workaround a bug in MSVC2013 that prevents instantiation of format_float.
int (*instantiate_format_float)(double, int, detail::float_specs, int (*instantiate_format_float)(double, int, detail::float_specs,