Fix some oversights and emergent behaviour with view selection.

Exposed the "native snapview" option on the video manager.  Trying to
use presence of a single view is a poor proxy that breaks with
multi-screen systems.

Allow rotation to be changed for native snapshot views, and disable the
zoom to screen area control when it has no effect on the selected view.

Treat an empty string identically to "auto" for view selectction.
Previously this was being used for prefix matching so it would force the
first view.  (This caused the bad snapshot view selection.  It had been
relying on "internal" not being a common view name prefix so it fell
through to automatic selection, but when changed to an empty string it
forced the first view.)

Documented "auto" as well as "native" for the -snapview option and
changed the default to auto rather than an empty string for consistency
with the -viewN options.

Added [w]string_view handlers to the stuff that's instantiated in
strformat.cpp since we'll be increasingly using them.

Cleaned up and updated some documentation.
This commit is contained in:
Vas Crabb 2020-12-20 15:28:27 +11:00
parent 25294ce9cd
commit ed872d1bd2
13 changed files with 150 additions and 61 deletions

View File

@ -1617,25 +1617,29 @@ Core State/Playback Options
**-snapview** *<viewname>*
Specifies the view to use when rendering snapshots and movies.
Specifies the view to use when rendering snapshots and videos. The
*<viewname>* does not need to be the full name of a view, MAME will choose
the first view with a name that has the *<viewname>* as a prefix. For
example **-snapview "screen 0 pixel"** will match the
“\ *Screen 0 Pixel Aspect (10:7)*\ ” view.
By default, both use a special 'internal' view, which renders a separate
snapshot per screen or renders movies only of the first screen. By
specifying this option, you can override this default behavior and select a
single view that will apply to all snapshots and movies. Note that
<viewname> does not need to be a perfect match; rather, it will select the
first view whose name matches all the characters specified by <viewname>.
If the *<viewname>* is ``auto`` or an empty string, MAME will select a view
based on the number of emulated screens in the system, and the available
external and internal artwork. MAME tries to select a view that shows all
emulated screens by default.
For example, **-snapview native** will match the "Native (15:14)" view even
though it is not a perfect match. <viewname> can also be 'auto', which
selects the first view with all screens present.
If the *<viewname>* is ``native``, MAME uses special internal view to save a
separate snapshot for each visible emulated screen, or to record a video for
the first visible screen only. The snapshot(s) or video will have the same
resolution as the emulated screen(s) with no artwork elements drawn or
effects applied.
The default value is ``internal``.
The default value is ``auto``.
Example:
.. code-block:: bash
mame64 pang -snapview pixel
mame64 wrecking -snapview cocktail
.. _mame-commandline-nosnapbilinear:
@ -1643,7 +1647,7 @@ Core State/Playback Options
**-[no]snapbilinear**
Specify if the snapshot or movie should have bilinear filtering applied.
Shutting this off can improve performance while recording video to a file.
Disabling this off can improve performance while recording video to a file.
The default is ON (**-snapbilinear**).
@ -2402,18 +2406,23 @@ Core Per-Window Options
**-view3** *<viewname>*
Specifies the initial view setting for each window. The *<viewname>* does
not need to be a perfect match; rather, it will select the first view whose
name matches all the characters specified by *<viewname>*. For example,
**-view native** will match the "*Native (15:14)*" view even though it is
not a perfect match. The value ``auto`` is also supported, and requests
that MAME perform a default selection.
Specifies the initial view setting for each window/screen. The *<viewname>*
does not need to be the full name of a view, MAME will choose the first view
with a name that has the *<viewname>* as a prefix. For example
**-view "screen 0 pixel"** will match the
“\ *Screen 0 Pixel Aspect (10:7)*\ ” view.
If the *<viewname>* is ``auto`` or an empty string, MAME will select views
based on the number of emulated screens in the system, the number of
windows/screens MAME is using, and the available external and internal
artwork. MAME tries to select views so that all emulated screens are
visible by default.
The default value for these options is ``auto``.
The **-view0**, **-view1**, **-view2**, **-view3** parameters apply to the
specific window. The **-view** parameter applies to all windows. The
window-specific options override values from the all window option.
specific window. The **-view** parameter applies to all windows. The
window-specific options override values from the all windows option.
Example:
.. code-block:: bash

View File

@ -77,9 +77,9 @@ of device, to find devices of a particular type, or to find devices that
implement a particular interface. When iterating using ``pairs`` or ``ipairs``,
devices are returned by walking the device tree depth-first in creation order.
The index get operator looks up a device by tag. It returns ``nil`` no device
with the specified tag is found, or if the device with the specified tag does
not meet the type/interface requirements of the device enumerator. The
The index get operator looks up a device by tag. It returns ``nil`` if no
device with the specified tag is found, or if the device with the specified tag
does not meet the type/interface requirements of the device enumerator. The
complexity is O(1) if the result is cached, but an uncached device lookup is
expensive. The ``at`` method has O(n) complexity.
@ -383,7 +383,7 @@ screen.pixel_period (read-only)
screen.scan_period (read-only)
The interval taken to draw a scan line (including the horizontal blanking
interval), as a floating-point number in units of seconds.
screen.pixel_period (read-only)
screen.frame_period (read-only)
The interval taken to draw a complete frame (including blanking intervals),
as a floating-point number in units of seconds.
screen.frame_number (read-only)
@ -619,8 +619,8 @@ Slot option
~~~~~~~~~~~
Wraps MAMEs ``device_slot_interface::slot_option`` class, which represents a
child device that a :ref:`slot device <luareference-dev-dislot>` slot device can
be configured to instantiate.
child device that a :ref:`slot device <luareference-dev-dislot>` can be
configured to instantiate.
Instantiation
^^^^^^^^^^^^^

View File

@ -74,7 +74,7 @@ const options_entry emu_options::s_option_entries[] =
{ OPTION_WAVWRITE, nullptr, OPTION_STRING, "optional filename to write a WAV file of the current session" },
{ OPTION_SNAPNAME, "%g/%i", OPTION_STRING, "override of the default snapshot/movie naming; %g == gamename, %i == index" },
{ OPTION_SNAPSIZE, "auto", OPTION_STRING, "specify snapshot/movie resolution (<width>x<height>) or 'auto' to use minimal size " },
{ OPTION_SNAPVIEW, "", OPTION_STRING, "specify snapshot/movie view or 'native' to use internal pixel-aspect views" },
{ OPTION_SNAPVIEW, "auto", OPTION_STRING, "snapshot/movie view - 'auto' for default, or 'native' for per-screen pixel-aspect views" },
{ OPTION_SNAPBILINEAR, "1", OPTION_BOOLEAN, "specify if the snapshot/movie should have bilinear filtering applied" },
{ OPTION_STATENAME, "%g", OPTION_STRING, "override of the default state subfolder naming; %g == gamename" },
{ OPTION_BURNIN, "0", OPTION_BOOLEAN, "create burn-in snapshots for each screen" },

View File

@ -1061,8 +1061,8 @@ unsigned render_target::configured_view(const char *viewname, int targetindex, i
{
layout_view *view = nullptr;
// auto view just selects the nth view
if (strcmp(viewname, "auto") != 0)
// if it isn't "auto" or an empty string, try to match it as a view name prefix
if (viewname && *viewname && strcmp(viewname, "auto"))
{
// scan for a matching view name
size_t const viewlen = strlen(viewname);
@ -3315,7 +3315,7 @@ void render_manager::config_load(config_type cfg_type, util::xml::data_node cons
for (util::xml::data_node const *targetnode = parentnode->get_child("target"); targetnode; targetnode = targetnode->get_next_sibling("target"))
{
render_target *const target = target_by_index(targetnode->get_attribute_int("index", -1));
if (target)
if (target && !target->hidden())
target->config_load(*targetnode);
}

View File

@ -349,10 +349,9 @@ void video_manager::save_snapshot(screen_device *screen, emu_file &file)
void video_manager::save_active_screen_snapshots()
{
// if we're native, then write one snapshot per visible screen
if (m_snap_native)
{
// write one snapshot per visible screen
// if we're native, then write one snapshot per visible screen
for (screen_device &screen : screen_device_enumerator(machine().root_device()))
if (machine().render().is_live(screen))
{
@ -362,10 +361,9 @@ void video_manager::save_active_screen_snapshots()
save_snapshot(&screen, file);
}
}
// otherwise, just write a single snapshot
else
{
// otherwise, just write a single snapshot
emu_file file(machine().options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
osd_file::error filerr = open_next(file, "png");
if (filerr == osd_file::error::NONE)

View File

@ -75,6 +75,7 @@ public:
int effective_frameskip() const;
// snapshots
bool snap_native() const { return m_snap_native; }
render_target &snapshot_target() { return *m_snap_target; }
void save_snapshot(screen_device *screen, emu_file &file);
void save_active_screen_snapshots();

View File

@ -12,17 +12,19 @@
*********************************************************************/
#include "emu.h"
#include "ui/ui.h"
#include "ui/menu.h"
#include "ui/filemngr.h"
#include "ui/filesel.h"
#include "ui/miscmenu.h"
#include "ui/imgcntrl.h"
#include "ui/floppycntrl.h"
#include "ui/imgcntrl.h"
#include "ui/miscmenu.h"
#include "ui/ui.h"
#include "softlist.h"
namespace ui {
/***************************************************************************
FILE MANAGER
***************************************************************************/
@ -168,7 +170,7 @@ void menu_file_manager::handle()
{
// process the menu
const event *event = process(0);
if (event != nullptr && event->itemref != nullptr && event->iptkey == IPT_UI_SELECT)
if (event && event->itemref && (event->iptkey == IPT_UI_SELECT))
{
if ((uintptr_t)event->itemref == 1)
{
@ -177,18 +179,15 @@ void menu_file_manager::handle()
else
{
selected_device = (device_image_interface *) event->itemref;
if (selected_device != nullptr)
if (selected_device)
{
m_curr_selected = true;
floppy_image_device *floppy_device = dynamic_cast<floppy_image_device *>(selected_device);
if (floppy_device != nullptr)
{
if (floppy_device)
menu::stack_push<menu_control_floppy_image>(ui(), container(), *floppy_device);
}
else
{
menu::stack_push<menu_control_device_image>(ui(), container(), *selected_device);
}
// reset the existing menu
reset(reset_options::REMEMBER_POSITION);
}

View File

@ -12,8 +12,8 @@
***************************************************************************/
#include "emu.h"
#include "ui/filesel.h"
#include "ui/ui.h"
#include "ui/utils.h"
@ -24,7 +24,9 @@
#include <cstring>
#include <locale>
namespace ui {
/***************************************************************************
CONSTANTS
***************************************************************************/
@ -310,8 +312,8 @@ void menu_file_selector::select_item(const file_selector_entry &entry)
case SELECTOR_ENTRY_TYPE_DRIVE:
case SELECTOR_ENTRY_TYPE_DIRECTORY:
// drive/directory - first check the path
{
// drive/directory - first check the path
util::zippath_directory::ptr dir;
osd_file::error const err = util::zippath_directory::open(entry.fullpath, dir);
if (err != osd_file::error::NONE)

View File

@ -114,7 +114,7 @@ void menu_main::populate(float &customtop, float &custombottom)
item_append(_("Slider Controls"), 0, (void *)SLIDERS);
item_append(_("Video Options"), 0, (machine().render().target_by_index(1) || machine().video().snapshot_target().view_name(1)) ? (void *)VIDEO_TARGETS : (void *)VIDEO_OPTIONS);
item_append(_("Video Options"), 0, (void *)VIDEO_TARGETS);
if (machine().crosshair().get_usage())
item_append(_("Crosshair Options"), 0, (void *)CROSSHAIR);

View File

@ -9,7 +9,6 @@
*********************************************************************/
#include "emu.h"
#include "ui/menu.h"
#include "ui/ui.h"

View File

@ -56,9 +56,8 @@ void menu_video_targets::populate(float &customtop, float &custombottom)
item_append(util::string_format(_("Screen #%d"), targetnum), 0, target);
}
// add option for snapshot target if it has multiple views
if (machine().video().snapshot_target().view_name(1))
item_append("Snapshot", 0, &machine().video().snapshot_target());
// add option for snapshot target
item_append("Snapshot", 0, &machine().video().snapshot_target());
}
/*-------------------------------------------------
@ -98,8 +97,11 @@ menu_video_options::menu_video_options(
, m_show_title(false)
, m_snapshot(snapshot)
{
set_selected_index(target.view());
reset(reset_options::REMEMBER_POSITION);
if (!m_snapshot || !machine().video().snap_native())
{
set_selected_index(target.view());
reset(reset_options::REMEMBER_POSITION);
}
}
menu_video_options::menu_video_options(
@ -114,8 +116,11 @@ menu_video_options::menu_video_options(
, m_show_title(true)
, m_snapshot(snapshot)
{
set_selected_index(target.view() + 2);
reset(reset_options::REMEMBER_POSITION);
if (!m_snapshot || !machine().video().snap_native())
{
set_selected_index(target.view() + 2);
reset(reset_options::REMEMBER_POSITION);
}
}
menu_video_options::~menu_video_options()
@ -134,9 +139,12 @@ void menu_video_options::populate(float &customtop, float &custombottom)
}
// add items for each view
for (char const *name = m_target.view_name(ref = 0); name; name = m_target.view_name(++ref))
item_append(name, 0, reinterpret_cast<void *>(ITEM_VIEW_FIRST + ref));
item_append(menu_item_type::SEPARATOR);
if (!m_snapshot || !machine().video().snap_native())
{
for (char const *name = m_target.view_name(ref = 0); name; name = m_target.view_name(++ref))
item_append(name, 0, reinterpret_cast<void *>(ITEM_VIEW_FIRST + ref));
item_append(menu_item_type::SEPARATOR);
}
// add items for visibility toggles
auto const &toggles = m_target.visibility_toggles();
@ -169,7 +177,8 @@ void menu_video_options::populate(float &customtop, float &custombottom)
item_append(_("Rotate"), subtext, FLAG_LEFT_ARROW | FLAG_RIGHT_ARROW, reinterpret_cast<void *>(ITEM_ROTATE));
// cropping
item_append_on_off(_("Zoom to Screen Area"), m_target.zoom_to_screen(), 0, reinterpret_cast<void *>(ITEM_ZOOM));
bool const canzoom(m_target.current_view().has_art() && !m_target.current_view().visible_screens().empty());
item_append_on_off(_("Zoom to Screen Area"), m_target.zoom_to_screen(), canzoom ? 0U : (FLAG_INVERT | FLAG_DISABLE), reinterpret_cast<void *>(ITEM_ZOOM));
if (!m_snapshot)
{

View File

@ -50,6 +50,7 @@ template void format_argument<std::ostream>::static_output<unsigned long long>(s
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 &);
@ -64,6 +65,7 @@ template bool format_argument<std::ostream>::static_make_integer<unsigned long l
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);
@ -78,6 +80,7 @@ template void format_argument<std::ostream>::static_store_integer<unsigned long
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<std::wostream>;
template void format_argument<std::wostream>::static_output<char>(std::wostream &, format_flags const &, void const *);
@ -95,6 +98,7 @@ template void format_argument<std::wostream>::static_output<unsigned long long>(
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 &);
@ -110,6 +114,7 @@ template bool format_argument<std::wostream>::static_make_integer<unsigned long
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);
@ -125,6 +130,7 @@ template void format_argument<std::wostream>::static_store_integer<unsigned long
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 *);
@ -141,6 +147,7 @@ template void format_argument<std::iostream>::static_output<unsigned long long>(
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 &);
@ -155,6 +162,7 @@ template bool format_argument<std::iostream>::static_make_integer<unsigned long
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);
@ -169,6 +177,7 @@ template void format_argument<std::iostream>::static_store_integer<unsigned long
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 *);
@ -186,6 +195,7 @@ template void format_argument<std::wiostream>::static_output<unsigned long long>
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 &);
@ -201,6 +211,7 @@ template bool format_argument<std::wiostream>::static_make_integer<unsigned long
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);
@ -216,6 +227,7 @@ template void format_argument<std::wiostream>::static_store_integer<unsigned lon
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 *);
@ -232,6 +244,7 @@ template void format_argument<std::ostringstream>::static_output<unsigned long l
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 &);
@ -246,6 +259,7 @@ template bool format_argument<std::ostringstream>::static_make_integer<unsigned
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);
@ -260,6 +274,7 @@ template void format_argument<std::ostringstream>::static_store_integer<unsigned
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 *);
@ -277,6 +292,7 @@ template void format_argument<std::wostringstream>::static_output<unsigned long
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 &);
@ -292,6 +308,7 @@ template bool format_argument<std::wostringstream>::static_make_integer<unsigned
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);
@ -307,6 +324,7 @@ template void format_argument<std::wostringstream>::static_store_integer<unsigne
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 *);
@ -323,6 +341,7 @@ template void format_argument<std::stringstream>::static_output<unsigned long lo
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 &);
@ -337,6 +356,7 @@ template bool format_argument<std::stringstream>::static_make_integer<unsigned l
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);
@ -351,6 +371,7 @@ template void format_argument<std::stringstream>::static_store_integer<unsigned
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 *);
@ -368,6 +389,7 @@ template void format_argument<std::wstringstream>::static_output<unsigned long l
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 &);
@ -383,6 +405,7 @@ template bool format_argument<std::wstringstream>::static_make_integer<unsigned
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);
@ -398,6 +421,7 @@ template void format_argument<std::wstringstream>::static_store_integer<unsigned
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 *);
@ -414,6 +438,7 @@ template void format_argument<ovectorstream>::static_output<unsigned long long>(
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 &);
@ -428,6 +453,7 @@ template bool format_argument<ovectorstream>::static_make_integer<unsigned long
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);
@ -442,6 +468,7 @@ template void format_argument<ovectorstream>::static_store_integer<unsigned long
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 *);
@ -459,6 +486,7 @@ template void format_argument<wovectorstream>::static_output<unsigned long long>
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 &);
@ -474,6 +502,7 @@ template bool format_argument<wovectorstream>::static_make_integer<unsigned long
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);
@ -489,6 +518,7 @@ template void format_argument<wovectorstream>::static_store_integer<unsigned lon
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 *);
@ -505,6 +535,7 @@ template void format_argument<vectorstream>::static_output<unsigned long long>(v
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 &);
@ -519,6 +550,7 @@ template bool format_argument<vectorstream>::static_make_integer<unsigned long l
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);
@ -533,6 +565,7 @@ template void format_argument<vectorstream>::static_store_integer<unsigned long
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 *);
@ -550,6 +583,7 @@ template void format_argument<wvectorstream>::static_output<unsigned long long>(
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 &);
@ -565,6 +599,7 @@ template bool format_argument<wvectorstream>::static_make_integer<unsigned long
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);
@ -580,6 +615,7 @@ template void format_argument<wvectorstream>::static_store_integer<unsigned long
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>;

View File

@ -1817,6 +1817,7 @@ extern template void format_argument<std::ostream>::static_output<unsigned long
extern template void format_argument<std::ostream>::static_output<char *>(std::ostream &, format_flags const &, void const *);
extern template void format_argument<std::ostream>::static_output<char const *>(std::ostream &, format_flags const &, void const *);
extern template void format_argument<std::ostream>::static_output<std::string>(std::ostream &, format_flags const &, void const *);
extern template void format_argument<std::ostream>::static_output<std::string_view>(std::ostream &, format_flags const &, void const *);
extern template bool format_argument<std::ostream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::ostream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::ostream>::static_make_integer<unsigned char>(void const *, int &);
@ -1831,6 +1832,7 @@ extern template bool format_argument<std::ostream>::static_make_integer<unsigned
extern template bool format_argument<std::ostream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<std::ostream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<std::ostream>::static_make_integer<std::string>(void const *, int &);
extern template bool format_argument<std::ostream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<std::ostream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::ostream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::ostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -1845,6 +1847,7 @@ extern template void format_argument<std::ostream>::static_store_integer<unsigne
extern template void format_argument<std::ostream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<std::ostream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<std::ostream>::static_store_integer<std::string>(void const *, std::streamoff);
extern template void format_argument<std::ostream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<std::wostream>;
extern template void format_argument<std::wostream>::static_output<char>(std::wostream &, format_flags const &, void const *);
@ -1862,6 +1865,7 @@ extern template void format_argument<std::wostream>::static_output<unsigned long
extern template void format_argument<std::wostream>::static_output<wchar_t *>(std::wostream &, format_flags const &, void const *);
extern template void format_argument<std::wostream>::static_output<wchar_t const *>(std::wostream &, format_flags const &, void const *);
extern template void format_argument<std::wostream>::static_output<std::wstring>(std::wostream &, format_flags const &, void const *);
extern template void format_argument<std::wostream>::static_output<std::wstring_view>(std::wostream &, format_flags const &, void const *);
extern template bool format_argument<std::wostream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::wostream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::wostream>::static_make_integer<unsigned char>(void const *, int &);
@ -1877,6 +1881,7 @@ extern template bool format_argument<std::wostream>::static_make_integer<unsigne
extern template bool format_argument<std::wostream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<std::wostream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<std::wostream>::static_make_integer<std::wstring>(void const *, int &);
extern template bool format_argument<std::wostream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<std::wostream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::wostream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::wostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -1892,6 +1897,7 @@ extern template void format_argument<std::wostream>::static_store_integer<unsign
extern template void format_argument<std::wostream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<std::wostream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<std::wostream>::static_store_integer<std::wstring>(void const *, std::streamoff);
extern template void format_argument<std::wostream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument<std::iostream>;
extern template void format_argument<std::iostream>::static_output<char>(std::iostream &, format_flags const &, void const *);
@ -1908,6 +1914,7 @@ extern template void format_argument<std::iostream>::static_output<unsigned long
extern template void format_argument<std::iostream>::static_output<char *>(std::iostream &, format_flags const &, void const *);
extern template void format_argument<std::iostream>::static_output<char const *>(std::iostream &, format_flags const &, void const *);
extern template void format_argument<std::iostream>::static_output<std::string>(std::iostream &, format_flags const &, void const *);
extern template void format_argument<std::iostream>::static_output<std::string_view>(std::iostream &, format_flags const &, void const *);
extern template bool format_argument<std::iostream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::iostream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::iostream>::static_make_integer<unsigned char>(void const *, int &);
@ -1922,6 +1929,7 @@ extern template bool format_argument<std::iostream>::static_make_integer<unsigne
extern template bool format_argument<std::iostream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<std::iostream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<std::iostream>::static_make_integer<std::string>(void const *, int &);
extern template bool format_argument<std::iostream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<std::iostream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::iostream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::iostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -1936,6 +1944,7 @@ extern template void format_argument<std::iostream>::static_store_integer<unsign
extern template void format_argument<std::iostream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<std::iostream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<std::iostream>::static_store_integer<std::string>(void const *, std::streamoff);
extern template void format_argument<std::iostream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<std::wiostream>;
extern template void format_argument<std::wiostream>::static_output<char>(std::wiostream &, format_flags const &, void const *);
@ -1953,6 +1962,7 @@ extern template void format_argument<std::wiostream>::static_output<unsigned lon
extern template void format_argument<std::wiostream>::static_output<wchar_t *>(std::wiostream &, format_flags const &, void const *);
extern template void format_argument<std::wiostream>::static_output<wchar_t const *>(std::wiostream &, format_flags const &, void const *);
extern template void format_argument<std::wiostream>::static_output<std::wstring>(std::wiostream &, format_flags const &, void const *);
extern template void format_argument<std::wiostream>::static_output<std::wstring_view>(std::wiostream &, format_flags const &, void const *);
extern template bool format_argument<std::wiostream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::wiostream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::wiostream>::static_make_integer<unsigned char>(void const *, int &);
@ -1968,6 +1978,7 @@ extern template bool format_argument<std::wiostream>::static_make_integer<unsign
extern template bool format_argument<std::wiostream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<std::wiostream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<std::wiostream>::static_make_integer<std::wstring>(void const *, int &);
extern template bool format_argument<std::wiostream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<std::wiostream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::wiostream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::wiostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -1983,6 +1994,7 @@ extern template void format_argument<std::wiostream>::static_store_integer<unsig
extern template void format_argument<std::wiostream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<std::wiostream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<std::wiostream>::static_store_integer<std::wstring>(void const *, std::streamoff);
extern template void format_argument<std::wiostream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument<std::ostringstream>;
extern template void format_argument<std::ostringstream>::static_output<char>(std::ostringstream &, format_flags const &, void const *);
@ -1999,6 +2011,7 @@ extern template void format_argument<std::ostringstream>::static_output<unsigned
extern template void format_argument<std::ostringstream>::static_output<char *>(std::ostringstream &, format_flags const &, void const *);
extern template void format_argument<std::ostringstream>::static_output<char const *>(std::ostringstream &, format_flags const &, void const *);
extern template void format_argument<std::ostringstream>::static_output<std::string>(std::ostringstream &, format_flags const &, void const *);
extern template void format_argument<std::ostringstream>::static_output<std::string_view>(std::ostringstream &, format_flags const &, void const *);
extern template bool format_argument<std::ostringstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::ostringstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::ostringstream>::static_make_integer<unsigned char>(void const *, int &);
@ -2013,6 +2026,7 @@ extern template bool format_argument<std::ostringstream>::static_make_integer<un
extern template bool format_argument<std::ostringstream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<std::ostringstream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<std::ostringstream>::static_make_integer<std::string>(void const *, int &);
extern template bool format_argument<std::ostringstream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<std::ostringstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::ostringstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::ostringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -2027,6 +2041,7 @@ extern template void format_argument<std::ostringstream>::static_store_integer<u
extern template void format_argument<std::ostringstream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<std::ostringstream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<std::ostringstream>::static_store_integer<std::string>(void const *, std::streamoff);
extern template void format_argument<std::ostringstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<std::wostringstream>;
extern template void format_argument<std::wostringstream>::static_output<char>(std::wostringstream &, format_flags const &, void const *);
@ -2044,6 +2059,7 @@ extern template void format_argument<std::wostringstream>::static_output<unsigne
extern template void format_argument<std::wostringstream>::static_output<wchar_t *>(std::wostringstream &, format_flags const &, void const *);
extern template void format_argument<std::wostringstream>::static_output<wchar_t const *>(std::wostringstream &, format_flags const &, void const *);
extern template void format_argument<std::wostringstream>::static_output<std::wstring>(std::wostringstream &, format_flags const &, void const *);
extern template void format_argument<std::wostringstream>::static_output<std::wstring_view>(std::wostringstream &, format_flags const &, void const *);
extern template bool format_argument<std::wostringstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::wostringstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::wostringstream>::static_make_integer<unsigned char>(void const *, int &);
@ -2059,6 +2075,7 @@ extern template bool format_argument<std::wostringstream>::static_make_integer<u
extern template bool format_argument<std::wostringstream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<std::wostringstream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<std::wostringstream>::static_make_integer<std::wstring>(void const *, int &);
extern template bool format_argument<std::wostringstream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<std::wostringstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::wostringstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::wostringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -2074,6 +2091,7 @@ extern template void format_argument<std::wostringstream>::static_store_integer<
extern template void format_argument<std::wostringstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<std::wostringstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<std::wostringstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
extern template void format_argument<std::wostringstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument<std::stringstream>;
extern template void format_argument<std::stringstream>::static_output<char>(std::stringstream &, format_flags const &, void const *);
@ -2090,6 +2108,7 @@ extern template void format_argument<std::stringstream>::static_output<unsigned
extern template void format_argument<std::stringstream>::static_output<char *>(std::stringstream &, format_flags const &, void const *);
extern template void format_argument<std::stringstream>::static_output<char const *>(std::stringstream &, format_flags const &, void const *);
extern template void format_argument<std::stringstream>::static_output<std::string>(std::stringstream &, format_flags const &, void const *);
extern template void format_argument<std::stringstream>::static_output<std::string_view>(std::stringstream &, format_flags const &, void const *);
extern template bool format_argument<std::stringstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::stringstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::stringstream>::static_make_integer<unsigned char>(void const *, int &);
@ -2104,6 +2123,7 @@ extern template bool format_argument<std::stringstream>::static_make_integer<uns
extern template bool format_argument<std::stringstream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<std::stringstream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<std::stringstream>::static_make_integer<std::string>(void const *, int &);
extern template bool format_argument<std::stringstream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<std::stringstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::stringstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::stringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -2118,6 +2138,7 @@ extern template void format_argument<std::stringstream>::static_store_integer<un
extern template void format_argument<std::stringstream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<std::stringstream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<std::stringstream>::static_store_integer<std::string>(void const *, std::streamoff);
extern template void format_argument<std::stringstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<std::wstringstream>;
extern template void format_argument<std::wstringstream>::static_output<char>(std::wstringstream &, format_flags const &, void const *);
@ -2135,6 +2156,7 @@ extern template void format_argument<std::wstringstream>::static_output<unsigned
extern template void format_argument<std::wstringstream>::static_output<wchar_t *>(std::wstringstream &, format_flags const &, void const *);
extern template void format_argument<std::wstringstream>::static_output<wchar_t const *>(std::wstringstream &, format_flags const &, void const *);
extern template void format_argument<std::wstringstream>::static_output<std::wstring>(std::wstringstream &, format_flags const &, void const *);
extern template void format_argument<std::wstringstream>::static_output<std::wstring_view>(std::wstringstream &, format_flags const &, void const *);
extern template bool format_argument<std::wstringstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::wstringstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::wstringstream>::static_make_integer<unsigned char>(void const *, int &);
@ -2150,6 +2172,7 @@ extern template bool format_argument<std::wstringstream>::static_make_integer<un
extern template bool format_argument<std::wstringstream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<std::wstringstream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<std::wstringstream>::static_make_integer<std::wstring>(void const *, int &);
extern template bool format_argument<std::wstringstream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<std::wstringstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::wstringstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::wstringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -2165,6 +2188,7 @@ extern template void format_argument<std::wstringstream>::static_store_integer<u
extern template void format_argument<std::wstringstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<std::wstringstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<std::wstringstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
extern template void format_argument<std::wstringstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument<ovectorstream>;
extern template void format_argument<ovectorstream>::static_output<char>(ovectorstream &, format_flags const &, void const *);
@ -2181,6 +2205,7 @@ extern template void format_argument<ovectorstream>::static_output<unsigned long
extern template void format_argument<ovectorstream>::static_output<char *>(ovectorstream &, format_flags const &, void const *);
extern template void format_argument<ovectorstream>::static_output<char const *>(ovectorstream &, format_flags const &, void const *);
extern template void format_argument<ovectorstream>::static_output<std::string>(ovectorstream &, format_flags const &, void const *);
extern template void format_argument<ovectorstream>::static_output<std::string_view>(ovectorstream &, format_flags const &, void const *);
extern template bool format_argument<ovectorstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<ovectorstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<ovectorstream>::static_make_integer<unsigned char>(void const *, int &);
@ -2195,6 +2220,7 @@ extern template bool format_argument<ovectorstream>::static_make_integer<unsigne
extern template bool format_argument<ovectorstream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<ovectorstream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<ovectorstream>::static_make_integer<std::string>(void const *, int &);
extern template bool format_argument<ovectorstream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<ovectorstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<ovectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<ovectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -2209,6 +2235,7 @@ extern template void format_argument<ovectorstream>::static_store_integer<unsign
extern template void format_argument<ovectorstream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<ovectorstream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<ovectorstream>::static_store_integer<std::string>(void const *, std::streamoff);
extern template void format_argument<ovectorstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<wovectorstream>;
extern template void format_argument<wovectorstream>::static_output<char>(wovectorstream &, format_flags const &, void const *);
@ -2226,6 +2253,7 @@ extern template void format_argument<wovectorstream>::static_output<unsigned lon
extern template void format_argument<wovectorstream>::static_output<wchar_t *>(wovectorstream &, format_flags const &, void const *);
extern template void format_argument<wovectorstream>::static_output<wchar_t const *>(wovectorstream &, format_flags const &, void const *);
extern template void format_argument<wovectorstream>::static_output<std::wstring>(wovectorstream &, format_flags const &, void const *);
extern template void format_argument<wovectorstream>::static_output<std::wstring_view>(wovectorstream &, format_flags const &, void const *);
extern template bool format_argument<wovectorstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<wovectorstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<wovectorstream>::static_make_integer<unsigned char>(void const *, int &);
@ -2241,6 +2269,7 @@ extern template bool format_argument<wovectorstream>::static_make_integer<unsign
extern template bool format_argument<wovectorstream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<wovectorstream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<wovectorstream>::static_make_integer<std::wstring>(void const *, int &);
extern template bool format_argument<wovectorstream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<wovectorstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<wovectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<wovectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -2256,6 +2285,7 @@ extern template void format_argument<wovectorstream>::static_store_integer<unsig
extern template void format_argument<wovectorstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<wovectorstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<wovectorstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
extern template void format_argument<wovectorstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument<vectorstream>;
extern template void format_argument<vectorstream>::static_output<char>(vectorstream &, format_flags const &, void const *);
@ -2272,6 +2302,7 @@ extern template void format_argument<vectorstream>::static_output<unsigned long
extern template void format_argument<vectorstream>::static_output<char *>(vectorstream &, format_flags const &, void const *);
extern template void format_argument<vectorstream>::static_output<char const *>(vectorstream &, format_flags const &, void const *);
extern template void format_argument<vectorstream>::static_output<std::string>(vectorstream &, format_flags const &, void const *);
extern template void format_argument<vectorstream>::static_output<std::string_view>(vectorstream &, format_flags const &, void const *);
extern template bool format_argument<vectorstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<vectorstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<vectorstream>::static_make_integer<unsigned char>(void const *, int &);
@ -2286,6 +2317,7 @@ extern template bool format_argument<vectorstream>::static_make_integer<unsigned
extern template bool format_argument<vectorstream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<vectorstream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<vectorstream>::static_make_integer<std::string>(void const *, int &);
extern template bool format_argument<vectorstream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<vectorstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<vectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<vectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -2300,6 +2332,7 @@ extern template void format_argument<vectorstream>::static_store_integer<unsigne
extern template void format_argument<vectorstream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<vectorstream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<vectorstream>::static_store_integer<std::string>(void const *, std::streamoff);
extern template void format_argument<vectorstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<wvectorstream>;
extern template void format_argument<wvectorstream>::static_output<char>(wvectorstream &, format_flags const &, void const *);
@ -2317,6 +2350,7 @@ extern template void format_argument<wvectorstream>::static_output<unsigned long
extern template void format_argument<wvectorstream>::static_output<wchar_t *>(wvectorstream &, format_flags const &, void const *);
extern template void format_argument<wvectorstream>::static_output<wchar_t const *>(wvectorstream &, format_flags const &, void const *);
extern template void format_argument<wvectorstream>::static_output<std::wstring>(wvectorstream &, format_flags const &, void const *);
extern template void format_argument<wvectorstream>::static_output<std::wstring_view>(wvectorstream &, format_flags const &, void const *);
extern template bool format_argument<wvectorstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<wvectorstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<wvectorstream>::static_make_integer<unsigned char>(void const *, int &);
@ -2332,6 +2366,7 @@ extern template bool format_argument<wvectorstream>::static_make_integer<unsigne
extern template bool format_argument<wvectorstream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<wvectorstream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<wvectorstream>::static_make_integer<std::wstring>(void const *, int &);
extern template bool format_argument<wvectorstream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<wvectorstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<wvectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<wvectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@ -2347,6 +2382,7 @@ extern template void format_argument<wvectorstream>::static_store_integer<unsign
extern template void format_argument<wvectorstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<wvectorstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<wvectorstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
extern template void format_argument<wvectorstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument_pack<std::ostream>;
extern template class format_argument_pack<std::wostream>;