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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 6 deletions

View File

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

View File

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

View File

@ -55,7 +55,9 @@ vformat_to(buffer<char>&, string_view,
type_identity_t<char>>>);
} // 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.
int (*instantiate_format_float)(double, int, detail::float_specs,