summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util/strformat.cpp
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2023-03-26 01:32:50 +1100
committer Vas Crabb <vas@vastheman.com>2023-03-26 01:32:50 +1100
commit4cf33cfe0a427d24d754c134eb94b9d1a67da637 (patch)
tree71d0864fd5efa77a50ed2061d3a2c6da05c41b33 /src/lib/util/strformat.cpp
parentfb81cb16bb19603f7fa0fff3698bdfa32b2896fc (diff)
Various optimisations to code generaton.
util/bitmap.cpp, util/palette.cpp: Marked lots of things constexpr. Bitmaps don't throw exceptions on allocation failure, they just become invalid. Almost nothing in MAME actually checks for this. emu/profiler.cpp: Abort if the profile stack overflows rather than throwing an exception. This is a developer feature and if it overflows, the code is broken. Calling a noreturn noexcept function generates less code than throwing an exception, which adds up. util/strformat.cpp: Traded away some unnecessary flexibility for more compact code. The stream objects must derive from std::basic_ostream now - they can't just be any old objects with the expected operators.
Diffstat (limited to 'src/lib/util/strformat.cpp')
-rw-r--r--src/lib/util/strformat.cpp747
1 files changed, 117 insertions, 630 deletions
diff --git a/src/lib/util/strformat.cpp b/src/lib/util/strformat.cpp
index cec14635e16..47bfdde6715 100644
--- a/src/lib/util/strformat.cpp
+++ b/src/lib/util/strformat.cpp
@@ -23,639 +23,126 @@ template class format_chars<wchar_t>;
template void format_flags::apply(std::ostream &) const;
template void format_flags::apply(std::wostream &) const;
-template void format_flags::apply(std::iostream &) const;
-template void format_flags::apply(std::wiostream &) const;
-template void format_flags::apply(std::ostringstream &) const;
-template void format_flags::apply(std::wostringstream &) const;
-template void format_flags::apply(std::stringstream &) const;
-template void format_flags::apply(std::wstringstream &) const;
-template void format_flags::apply(ovectorstream &) const;
-template void format_flags::apply(wovectorstream &) const;
-template void format_flags::apply(vectorstream &) const;
-template void format_flags::apply(wvectorstream &) const;
-template class format_argument<std::ostream>;
-template void format_argument<std::ostream>::static_output<char>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<signed char>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<unsigned char>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<short>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<unsigned short>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<int>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<unsigned int>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<long>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<unsigned long>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<long long>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<unsigned long long>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<char *>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<char const *>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<std::string>(std::ostream &, format_flags const &, void const *);
-template void format_argument<std::ostream>::static_output<std::string_view>(std::ostream &, format_flags const &, void const *);
-template bool format_argument<std::ostream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<char *>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<char const *>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<std::string>(void const *, int &);
-template bool format_argument<std::ostream>::static_make_integer<std::string_view>(void const *, int &);
-template void format_argument<std::ostream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<char *>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<char const *>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<std::string>(void const *, std::streamoff);
-template void format_argument<std::ostream>::static_store_integer<std::string_view>(void const *, std::streamoff);
+template class format_argument<char>;
+template void format_argument<char>::static_output<bool>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<char>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<signed char>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<unsigned char>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<short>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<unsigned short>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<int>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<unsigned int>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<long>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<unsigned long>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<long long>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<unsigned long long>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<char *>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<char const *>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<std::string>(std::ostream &, format_flags const &, void const *);
+template void format_argument<char>::static_output<std::string_view>(std::ostream &, format_flags const &, void const *);
+template bool format_argument<char>::static_make_integer<bool>(void const *, int &);
+template bool format_argument<char>::static_make_integer<char>(void const *, int &);
+template bool format_argument<char>::static_make_integer<signed char>(void const *, int &);
+template bool format_argument<char>::static_make_integer<unsigned char>(void const *, int &);
+template bool format_argument<char>::static_make_integer<short>(void const *, int &);
+template bool format_argument<char>::static_make_integer<unsigned short>(void const *, int &);
+template bool format_argument<char>::static_make_integer<int>(void const *, int &);
+template bool format_argument<char>::static_make_integer<unsigned int>(void const *, int &);
+template bool format_argument<char>::static_make_integer<long>(void const *, int &);
+template bool format_argument<char>::static_make_integer<unsigned long>(void const *, int &);
+template bool format_argument<char>::static_make_integer<long long>(void const *, int &);
+template bool format_argument<char>::static_make_integer<unsigned long long>(void const *, int &);
+template bool format_argument<char>::static_make_integer<char *>(void const *, int &);
+template bool format_argument<char>::static_make_integer<char const *>(void const *, int &);
+template bool format_argument<char>::static_make_integer<std::string>(void const *, int &);
+template bool format_argument<char>::static_make_integer<std::string_view>(void const *, int &);
+template void format_argument<char>::static_store_integer<bool>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<char>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<signed char>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<unsigned char>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<short>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<unsigned short>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<int>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<unsigned int>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<long>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<unsigned long>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<long long>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<unsigned long long>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<char *>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<char const *>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<std::string>(void const *, std::streamoff);
+template void format_argument<char>::static_store_integer<std::string_view>(void const *, std::streamoff);
+
+template class format_argument<wchar_t>;
+template void format_argument<wchar_t>::static_output<bool>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<char>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<signed char>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<unsigned char>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<wchar_t>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<short>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<unsigned short>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<int>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<unsigned int>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<long>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<unsigned long>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<long long>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<unsigned long long>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<wchar_t *>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<wchar_t const *>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<std::wstring>(std::wostream &, format_flags const &, void const *);
+template void format_argument<wchar_t>::static_output<std::wstring_view>(std::wostream &, format_flags const &, void const *);
+template bool format_argument<wchar_t>::static_make_integer<bool>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<char>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<signed char>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<unsigned char>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<wchar_t>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<short>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<unsigned short>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<int>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<unsigned int>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<long>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<unsigned long>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<long long>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<unsigned long long>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<wchar_t *>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<wchar_t const *>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<std::wstring>(void const *, int &);
+template bool format_argument<wchar_t>::static_make_integer<std::wstring_view>(void const *, int &);
+template void format_argument<wchar_t>::static_store_integer<bool>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<char>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<signed char>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<unsigned char>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<wchar_t>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<short>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<unsigned short>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<int>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<unsigned int>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<long>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<unsigned long>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<long long>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<unsigned long long>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<wchar_t *>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<std::wstring>(void const *, std::streamoff);
+template void format_argument<wchar_t>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
+
+template class format_argument_pack<char>;
+template class format_argument_pack<wchar_t>;
+
+template std::ostream::off_type stream_format(std::ostream &, format_argument_pack<char> const &);
+template std::wostream::off_type stream_format(std::wostream &, format_argument_pack<wchar_t> const &);
-template class format_argument<std::wostream>;
-template void format_argument<std::wostream>::static_output<char>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<signed char>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<unsigned char>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<wchar_t>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<short>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<unsigned short>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<int>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<unsigned int>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<long>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<unsigned long>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<long long>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<unsigned long long>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<wchar_t *>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<wchar_t const *>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<std::wstring>(std::wostream &, format_flags const &, void const *);
-template void format_argument<std::wostream>::static_output<std::wstring_view>(std::wostream &, format_flags const &, void const *);
-template bool format_argument<std::wostream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<wchar_t>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<wchar_t *>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<wchar_t const *>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<std::wstring>(void const *, int &);
-template bool format_argument<std::wostream>::static_make_integer<std::wstring_view>(void const *, int &);
-template void format_argument<std::wostream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<wchar_t>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<std::wstring>(void const *, std::streamoff);
-template void format_argument<std::wostream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
-
-template class format_argument<std::iostream>;
-template void format_argument<std::iostream>::static_output<char>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<signed char>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<unsigned char>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<short>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<unsigned short>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<int>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<unsigned int>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<long>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<unsigned long>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<long long>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<unsigned long long>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<char *>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<char const *>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<std::string>(std::iostream &, format_flags const &, void const *);
-template void format_argument<std::iostream>::static_output<std::string_view>(std::iostream &, format_flags const &, void const *);
-template bool format_argument<std::iostream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<char *>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<char const *>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<std::string>(void const *, int &);
-template bool format_argument<std::iostream>::static_make_integer<std::string_view>(void const *, int &);
-template void format_argument<std::iostream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<char *>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<char const *>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<std::string>(void const *, std::streamoff);
-template void format_argument<std::iostream>::static_store_integer<std::string_view>(void const *, std::streamoff);
-
-template class format_argument<std::wiostream>;
-template void format_argument<std::wiostream>::static_output<char>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<signed char>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<unsigned char>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<wchar_t>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<short>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<unsigned short>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<int>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<unsigned int>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<long>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<unsigned long>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<long long>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<unsigned long long>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<wchar_t *>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<wchar_t const *>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<std::wstring>(std::wiostream &, format_flags const &, void const *);
-template void format_argument<std::wiostream>::static_output<std::wstring_view>(std::wiostream &, format_flags const &, void const *);
-template bool format_argument<std::wiostream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<wchar_t>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<wchar_t *>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<wchar_t const *>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<std::wstring>(void const *, int &);
-template bool format_argument<std::wiostream>::static_make_integer<std::wstring_view>(void const *, int &);
-template void format_argument<std::wiostream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<wchar_t>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<std::wstring>(void const *, std::streamoff);
-template void format_argument<std::wiostream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
-
-template class format_argument<std::ostringstream>;
-template void format_argument<std::ostringstream>::static_output<char>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<signed char>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<unsigned char>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<short>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<unsigned short>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<int>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<unsigned int>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<long>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<unsigned long>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<long long>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<unsigned long long>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<char *>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<char const *>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<std::string>(std::ostringstream &, format_flags const &, void const *);
-template void format_argument<std::ostringstream>::static_output<std::string_view>(std::ostringstream &, format_flags const &, void const *);
-template bool format_argument<std::ostringstream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<char *>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<char const *>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<std::string>(void const *, int &);
-template bool format_argument<std::ostringstream>::static_make_integer<std::string_view>(void const *, int &);
-template void format_argument<std::ostringstream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<char *>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<char const *>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<std::string>(void const *, std::streamoff);
-template void format_argument<std::ostringstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
-
-template class format_argument<std::wostringstream>;
-template void format_argument<std::wostringstream>::static_output<char>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<signed char>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<unsigned char>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<wchar_t>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<short>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<unsigned short>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<int>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<unsigned int>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<long>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<unsigned long>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<long long>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<unsigned long long>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<wchar_t *>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<wchar_t const *>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<std::wstring>(std::wostringstream &, format_flags const &, void const *);
-template void format_argument<std::wostringstream>::static_output<std::wstring_view>(std::wostringstream &, format_flags const &, void const *);
-template bool format_argument<std::wostringstream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<wchar_t>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<wchar_t *>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<wchar_t const *>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<std::wstring>(void const *, int &);
-template bool format_argument<std::wostringstream>::static_make_integer<std::wstring_view>(void const *, int &);
-template void format_argument<std::wostringstream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<wchar_t>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
-template void format_argument<std::wostringstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
-
-template class format_argument<std::stringstream>;
-template void format_argument<std::stringstream>::static_output<char>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<signed char>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<unsigned char>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<short>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<unsigned short>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<int>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<unsigned int>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<long>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<unsigned long>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<long long>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<unsigned long long>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<char *>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<char const *>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<std::string>(std::stringstream &, format_flags const &, void const *);
-template void format_argument<std::stringstream>::static_output<std::string_view>(std::stringstream &, format_flags const &, void const *);
-template bool format_argument<std::stringstream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<char *>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<char const *>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<std::string>(void const *, int &);
-template bool format_argument<std::stringstream>::static_make_integer<std::string_view>(void const *, int &);
-template void format_argument<std::stringstream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<char *>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<char const *>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<std::string>(void const *, std::streamoff);
-template void format_argument<std::stringstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
-
-template class format_argument<std::wstringstream>;
-template void format_argument<std::wstringstream>::static_output<char>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<signed char>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<unsigned char>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<wchar_t>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<short>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<unsigned short>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<int>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<unsigned int>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<long>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<unsigned long>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<long long>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<unsigned long long>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<wchar_t *>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<wchar_t const *>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<std::wstring>(std::wstringstream &, format_flags const &, void const *);
-template void format_argument<std::wstringstream>::static_output<std::wstring_view>(std::wstringstream &, format_flags const &, void const *);
-template bool format_argument<std::wstringstream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<wchar_t>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<wchar_t *>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<wchar_t const *>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<std::wstring>(void const *, int &);
-template bool format_argument<std::wstringstream>::static_make_integer<std::wstring_view>(void const *, int &);
-template void format_argument<std::wstringstream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<wchar_t>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
-template void format_argument<std::wstringstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
-
-template class format_argument<ovectorstream>;
-template void format_argument<ovectorstream>::static_output<char>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<signed char>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<unsigned char>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<short>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<unsigned short>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<int>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<unsigned int>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<long>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<unsigned long>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<long long>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<unsigned long long>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<char *>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<char const *>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<std::string>(ovectorstream &, format_flags const &, void const *);
-template void format_argument<ovectorstream>::static_output<std::string_view>(ovectorstream &, format_flags const &, void const *);
-template bool format_argument<ovectorstream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<char *>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<char const *>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<std::string>(void const *, int &);
-template bool format_argument<ovectorstream>::static_make_integer<std::string_view>(void const *, int &);
-template void format_argument<ovectorstream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<char *>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<char const *>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<std::string>(void const *, std::streamoff);
-template void format_argument<ovectorstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
-
-template class format_argument<wovectorstream>;
-template void format_argument<wovectorstream>::static_output<char>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<signed char>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<unsigned char>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<wchar_t>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<short>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<unsigned short>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<int>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<unsigned int>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<long>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<unsigned long>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<long long>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<unsigned long long>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<wchar_t *>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<wchar_t const *>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<std::wstring>(wovectorstream &, format_flags const &, void const *);
-template void format_argument<wovectorstream>::static_output<std::wstring_view>(wovectorstream &, format_flags const &, void const *);
-template bool format_argument<wovectorstream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<wchar_t>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<wchar_t *>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<wchar_t const *>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<std::wstring>(void const *, int &);
-template bool format_argument<wovectorstream>::static_make_integer<std::wstring_view>(void const *, int &);
-template void format_argument<wovectorstream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<wchar_t>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
-template void format_argument<wovectorstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
-
-template class format_argument<vectorstream>;
-template void format_argument<vectorstream>::static_output<char>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<signed char>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<unsigned char>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<short>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<unsigned short>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<int>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<unsigned int>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<long>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<unsigned long>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<long long>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<unsigned long long>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<char *>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<char const *>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<std::string>(vectorstream &, format_flags const &, void const *);
-template void format_argument<vectorstream>::static_output<std::string_view>(vectorstream &, format_flags const &, void const *);
-template bool format_argument<vectorstream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<char *>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<char const *>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<std::string>(void const *, int &);
-template bool format_argument<vectorstream>::static_make_integer<std::string_view>(void const *, int &);
-template void format_argument<vectorstream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<char *>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<char const *>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<std::string>(void const *, std::streamoff);
-template void format_argument<vectorstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
-
-template class format_argument<wvectorstream>;
-template void format_argument<wvectorstream>::static_output<char>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<signed char>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<unsigned char>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<wchar_t>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<short>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<unsigned short>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<int>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<unsigned int>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<long>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<unsigned long>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<long long>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<unsigned long long>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<wchar_t *>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<wchar_t const *>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<std::wstring>(wvectorstream &, format_flags const &, void const *);
-template void format_argument<wvectorstream>::static_output<std::wstring_view>(wvectorstream &, format_flags const &, void const *);
-template bool format_argument<wvectorstream>::static_make_integer<char>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<signed char>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<unsigned char>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<wchar_t>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<short>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<unsigned short>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<int>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<unsigned int>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<long>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<unsigned long>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<long long>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<unsigned long long>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<wchar_t *>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<wchar_t const *>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<std::wstring>(void const *, int &);
-template bool format_argument<wvectorstream>::static_make_integer<std::wstring_view>(void const *, int &);
-template void format_argument<wvectorstream>::static_store_integer<char>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<wchar_t>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<short>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<unsigned short>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<int>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<unsigned int>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<long>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<unsigned long>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<long long>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<unsigned long long>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
-template void format_argument<wvectorstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
-
-template class format_argument_pack<std::ostream>;
-template class format_argument_pack<std::wostream>;
-template class format_argument_pack<std::iostream>;
-template class format_argument_pack<std::wiostream>;
-template class format_argument_pack<std::ostringstream>;
-template class format_argument_pack<std::wostringstream>;
-template class format_argument_pack<std::stringstream>;
-template class format_argument_pack<std::wstringstream>;
-template class format_argument_pack<ovectorstream>;
-template class format_argument_pack<wovectorstream>;
-template class format_argument_pack<vectorstream>;
-template class format_argument_pack<wvectorstream>;
+} // namespace detail
-template std::ostream::off_type stream_format(std::ostream &, format_argument_pack<std::ostream> const &);
-template std::wostream::off_type stream_format(std::wostream &, format_argument_pack<std::wostream> const &);
-template std::iostream::off_type stream_format(std::iostream &, format_argument_pack<std::ostream> const &);
-template std::iostream::off_type stream_format(std::iostream &, format_argument_pack<std::iostream> const &);
-template std::wiostream::off_type stream_format(std::wiostream &, format_argument_pack<std::wostream> const &);
-template std::wiostream::off_type stream_format(std::wiostream &, format_argument_pack<std::wiostream> const &);
-template std::ostringstream::off_type stream_format(std::ostringstream &, format_argument_pack<std::ostream> const &);
-template std::ostringstream::off_type stream_format(std::ostringstream &, format_argument_pack<std::ostringstream> const &);
-template std::wostringstream::off_type stream_format(std::wostringstream &, format_argument_pack<std::wostream> const &);
-template std::wostringstream::off_type stream_format(std::wostringstream &, format_argument_pack<std::wostringstream> const &);
-template std::stringstream::off_type stream_format(std::stringstream &, format_argument_pack<std::ostream> const &);
-template std::stringstream::off_type stream_format(std::stringstream &, format_argument_pack<std::iostream> const &);
-template std::stringstream::off_type stream_format(std::stringstream &, format_argument_pack<std::stringstream> const &);
-template std::wstringstream::off_type stream_format(std::wstringstream &, format_argument_pack<std::wostream> const &);
-template std::wstringstream::off_type stream_format(std::wstringstream &, format_argument_pack<std::wiostream> const &);
-template std::wstringstream::off_type stream_format(std::wstringstream &, format_argument_pack<std::wstringstream> const &);
-template ovectorstream::off_type stream_format(ovectorstream &, format_argument_pack<std::ostream> const &);
-template ovectorstream::off_type stream_format(ovectorstream &, format_argument_pack<ovectorstream> const &);
-template wovectorstream::off_type stream_format(wovectorstream &, format_argument_pack<std::wostream> const &);
-template wovectorstream::off_type stream_format(wovectorstream &, format_argument_pack<wovectorstream> const &);
-template vectorstream::off_type stream_format(vectorstream &, format_argument_pack<std::ostream> const &);
-template vectorstream::off_type stream_format(vectorstream &, format_argument_pack<std::iostream> const &);
-template vectorstream::off_type stream_format(vectorstream &, format_argument_pack<vectorstream> const &);
-template wvectorstream::off_type stream_format(wvectorstream &, format_argument_pack<std::wostream> const &);
-template wvectorstream::off_type stream_format(wvectorstream &, format_argument_pack<std::wiostream> const &);
-template wvectorstream::off_type stream_format(wvectorstream &, format_argument_pack<wvectorstream> const &);
+template std::string string_format(format_argument_pack<char> const &);
+template std::string string_format(format_argument_pack<char> &&);
+template std::string string_format(std::locale const &, format_argument_pack<char> const &);
+template std::string string_format(std::locale const &, format_argument_pack<char> &&);
-} // namespace detail
+template std::wstring string_format(format_argument_pack<wchar_t> const &);
+template std::wstring string_format(format_argument_pack<wchar_t> &&);
+template std::wstring string_format(std::locale const &, format_argument_pack<wchar_t> const &);
+template std::wstring string_format(std::locale const &, format_argument_pack<wchar_t> &&);
} // namespace util