Export ostream formatters and streamed() from the module (#4861)

Make basic_ostream_formatter, ostream_formatter and streamed() accessible
to module users via FMT_BEGIN_EXPORT/FMT_BEGIN_EXPORT. Drop now unneeded
FMT_EXPORT for print() and println().
This commit is contained in:
Avi Kivity 2026-07-23 18:14:21 +03:00 committed by GitHub
parent 4e5ff510f8
commit 6439aa09b1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -70,6 +70,8 @@ template <typename T> struct streamed_view {
}; };
} // namespace detail } // namespace detail
FMT_BEGIN_EXPORT
// Formats an object of type T that has an overloaded ostream operator<<. // Formats an object of type T that has an overloaded ostream operator<<.
template <typename Char> template <typename Char>
struct basic_ostream_formatter : formatter<basic_string_view<Char>, Char> { struct basic_ostream_formatter : formatter<basic_string_view<Char>, Char> {
@ -147,7 +149,7 @@ inline void vprint(std::ostream& os, string_view fmt, format_args args) {
* *
* fmt::print(cerr, "Don't {}!", "panic"); * fmt::print(cerr, "Don't {}!", "panic");
*/ */
FMT_EXPORT template <typename... T> template <typename... T>
void print(std::ostream& os, format_string<T...> fmt, T&&... args) { void print(std::ostream& os, format_string<T...> fmt, T&&... args) {
fmt::vargs<T...> vargs = {{args...}}; fmt::vargs<T...> vargs = {{args...}};
if FMT_CONSTEXPR20 (detail::use_utf8) return vprint(os, fmt.str, vargs); if FMT_CONSTEXPR20 (detail::use_utf8) return vprint(os, fmt.str, vargs);
@ -156,12 +158,14 @@ void print(std::ostream& os, format_string<T...> fmt, T&&... args) {
detail::write_buffer(os, buffer); detail::write_buffer(os, buffer);
} }
FMT_EXPORT template <typename... T> template <typename... T>
void println(std::ostream& os, format_string<T...> fmt, T&&... args) { void println(std::ostream& os, format_string<T...> fmt, T&&... args) {
fmt::print(os, FMT_STRING("{}\n"), fmt::print(os, FMT_STRING("{}\n"),
fmt::format(fmt, std::forward<T>(args)...)); fmt::format(fmt, std::forward<T>(args)...));
} }
FMT_END_EXPORT
FMT_END_NAMESPACE FMT_END_NAMESPACE
#endif // FMT_OSTREAM_H_ #endif // FMT_OSTREAM_H_