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
FMT_BEGIN_EXPORT
// Formats an object of type T that has an overloaded ostream operator<<.
template <typename 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_EXPORT template <typename... T>
template <typename... T>
void print(std::ostream& os, format_string<T...> fmt, T&&... args) {
fmt::vargs<T...> vargs = {{args...}};
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);
}
FMT_EXPORT template <typename... T>
template <typename... T>
void println(std::ostream& os, format_string<T...> fmt, T&&... args) {
fmt::print(os, FMT_STRING("{}\n"),
fmt::format(fmt, std::forward<T>(args)...));
}
FMT_END_EXPORT
FMT_END_NAMESPACE
#endif // FMT_OSTREAM_H_