U_NAMESPACE_BEGIN
+namespace number {
+namespace impl {
+
// Export an explicit template instantiation of the LocalPointer that is used as a
// data member of CurrencyPluralInfoWrapper.
// (When building DLLs for Windows this is required.)
template class U_I18N_API LocalPointer<CurrencyPluralInfo>;
#endif
-namespace number {
-namespace impl {
-
// Exported as U_I18N_API because it is a public member field of exported DecimalFormatProperties
template<typename T>
struct U_I18N_API CopyableLocalPointer {
};
// Export an explicit template instantiation of the CompactUnicodeString that is used as a data member of AffixPatternMatcher.
+// Also an explicit template instantiation of the MaybeStackArray that is used inside of the CompactUnicodeString.
// When building DLLs for Windows this is required even though no direct access to the CompactUnicodeString leaks out of the i18n library.
// (See digitlst.h, pluralaffix.h, datefmt.h, and others for similar examples.)
#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<UChar, 4>;
template class U_I18N_API CompactUnicodeString<4>;
#endif
void accept(StringSegment& segment, ParsedNumber& result) const override;
};
-
-class PermilleMatcher : public SymbolMatcher {
+// Exported as U_I18N_API for tests
+class U_I18N_API PermilleMatcher : public SymbolMatcher {
public:
PermilleMatcher() = default; // WARNING: Leaves the object in an unusable state