[libcxx-commits] [libcxx] d2617a6 - [libcxx] [test] Fix the put_double, put_long_double tests for clang-cl

Martin Storsjö via libcxx-commits libcxx-commits at lists.llvm.org
Tue Mar 1 11:35:24 PST 2022


Author: Martin Storsjö
Date: 2022-03-01T21:33:30+02:00
New Revision: d2617a6b5250d79ea182d6e5b557704afbff6576

URL: https://github.com/llvm/llvm-project/commit/d2617a6b5250d79ea182d6e5b557704afbff6576
DIFF: https://github.com/llvm/llvm-project/commit/d2617a6b5250d79ea182d6e5b557704afbff6576.diff

LOG: [libcxx] [test] Fix the put_double, put_long_double tests for clang-cl

These tests are hit hard by a bug that is fixed in a newer version
of UCRT. Add a test for the specific bug, and XFAIL the tests if
that bug is present (as it is in CI).

Split out hex formatting of floats to separate test files, that
are excluded with `XFAIL: msvc`. (Based on reading the C standard for
printf formatting, it seems like this isn't necessarily a proper bug
in printf, but just a case of differing optional behaviour.)

Differential Revision: https://reviews.llvm.org/D120022

Added: 
    libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.hex.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.hex.pass.cpp

Modified: 
    libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.pass.cpp
    libcxx/utils/libcxx/test/features.py

Removed: 
    


################################################################################
diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.hex.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.hex.pass.cpp
new file mode 100644
index 0000000000000..660a46fd5278f
--- /dev/null
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.hex.pass.cpp
@@ -0,0 +1,3636 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// <locale>
+
+// class num_put<charT, OutputIterator>
+
+// iter_type put(iter_type s, ios_base& iob, char_type fill, double v) const;
+
+// With the Microsoft UCRT, printf("%a", 0.0) produces "0x0.0000000000000p+0"
+// while other C runtimes produce just "0x0p+0".
+// https://developercommunity.visualstudio.com/t/Printf-formatting-of-float-as-hex-prints/1660844
+// XFAIL: msvc
+
+// XFAIL: LIBCXX-AIX-FIXME
+
+#include <locale>
+#include <ios>
+#include <cassert>
+#include <streambuf>
+#include <cmath>
+#include "test_macros.h"
+#include "test_iterators.h"
+
+typedef std::num_put<char, cpp17_output_iterator<char*> > F;
+
+class my_facet
+    : public F
+{
+public:
+    explicit my_facet(std::size_t refs = 0)
+        : F(refs) {}
+};
+
+class my_numpunct
+    : public std::numpunct<char>
+{
+public:
+    my_numpunct() : std::numpunct<char>() {}
+
+protected:
+    virtual char_type do_decimal_point() const {return ';';}
+    virtual char_type do_thousands_sep() const {return '_';}
+    virtual std::string do_grouping() const {return std::string("\1\2\3");}
+};
+
+void test1()
+{
+    char str[200];
+    std::locale lc = std::locale::classic();
+    std::locale lg(lc, new my_numpunct);
+    const my_facet f(1);
+    {
+        double v = -0.;
+        std::ios ios(0);
+        std::hexfloat(ios);
+        // %a
+        {
+            ios.precision(0);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            ios.precision(1);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            ios.precision(6);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            ios.precision(16);
+            {
+            }
+            ios.precision(60);
+            {
+            }
+        }
+    }
+}
+
+void test2()
+{
+    char str[200];
+    std::locale lc = std::locale::classic();
+    std::locale lg(lc, new my_numpunct);
+    const my_facet f(1);
+    {
+        double v = 1234567890.125;
+        std::ios ios(0);
+        std::hexfloat(ios);
+        // %a
+        {
+            ios.precision(0);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            ios.precision(1);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            ios.precision(6);
+            {
+            }
+            ios.precision(16);
+            {
+            }
+            ios.precision(60);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1.26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x1;26580b488p+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x********1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1.26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1.26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x1;26580b488p+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0x1;26580b488p+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1.26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X1;26580B488P+30********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X********1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1.26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1.26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X1;26580B488P+30*******");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*******+0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+*******0X1;26580B488P+30");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+
+int main(int, char**)
+{
+    test1();
+    test2();
+
+    return 0;
+}

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.pass.cpp
index 08c9718e68e72..7784eecda3a66 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.pass.cpp
@@ -12,23 +12,7 @@
 
 // iter_type put(iter_type s, ios_base& iob, char_type fill, double v) const;
 
-// FIXME: The printf functions in Microsoft's CRT have a couple quirks in
-// corner cases, failing this test:
-// - With the Microsoft UCRT, printf("%#.*g", 0, 0.0) produces "0.0" while
-//   other C runtimes produce "0.". For other precisions than 0, Microsoft's
-//   consistently produce one digit more than others. In the MinGW test setups,
-//   the code is built with __USE_MINGW_ANSI_STDIO=1, which uses MinGW's own
-//   reimplementation of stdio functions, which doesn't have this issue.
-//   This bug requires excluding everything that runs with showpoint() enabled.
-//   https://developercommunity.visualstudio.com/t/printf-formatting-with-g-outputs-too/1660837
-//   This issue is fixed in newer UCRT versions, since 10.0.19041.0.
-// - With the Microsoft UCRT, printf("%a", 0.0) produces "0x0.0000000000000p+0"
-//   while other C runtimes produce just "0x0p+0". This requires omitting all
-//   tests of hex float formatting.
-//   https://developercommunity.visualstudio.com/t/Printf-formatting-of-float-as-hex-prints/1660844
-// XFAIL: msvc
-
-// XFAIL: LIBCXX-AIX-FIXME
+// XFAIL: win32-broken-printf-g-precision
 
 #include <locale>
 #include <ios>
@@ -14306,3584 +14290,6 @@ void test6()
     }
 }
 
-void test7()
-{
-    char str[200];
-    std::locale lc = std::locale::classic();
-    std::locale lg(lc, new my_numpunct);
-    const my_facet f(1);
-    {
-        double v = -0.;
-        std::ios ios(0);
-        std::hexfloat(ios);
-        // %a
-        {
-            ios.precision(0);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            ios.precision(1);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            ios.precision(6);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            ios.precision(16);
-            {
-            }
-            ios.precision(60);
-            {
-            }
-        }
-    }
-}
-
-void test8()
-{
-    char str[200];
-    std::locale lc = std::locale::classic();
-    std::locale lg(lc, new my_numpunct);
-    const my_facet f(1);
-    {
-        double v = 1234567890.125;
-        std::ios ios(0);
-        std::hexfloat(ios);
-        // %a
-        {
-            ios.precision(0);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            ios.precision(1);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            ios.precision(6);
-            {
-            }
-            ios.precision(16);
-            {
-            }
-            ios.precision(60);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1.26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x1;26580b488p+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x********1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1.26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1.26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x1;26580b488p+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0x1;26580b488p+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1.26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X1;26580B488P+30********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X********1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1.26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1.26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X1;26580B488P+30*******");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*******+0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+*******0X1;26580B488P+30");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-
 int main(int, char**)
 {
     test1();
@@ -17892,8 +14298,6 @@ int main(int, char**)
     test4();
     test5();
     test6();
-    test7();
-    test8();
 
   return 0;
 }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.hex.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.hex.pass.cpp
new file mode 100644
index 0000000000000..a13b507a214b4
--- /dev/null
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.hex.pass.cpp
@@ -0,0 +1,3642 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// <locale>
+
+// class num_put<charT, OutputIterator>
+
+// iter_type put(iter_type s, ios_base& iob, char_type fill, long double v) const;
+
+// With the Microsoft UCRT, printf("%a", 0.0) produces "0x0.0000000000000p+0"
+// while other C runtimes produce just "0x0p+0".
+// https://developercommunity.visualstudio.com/t/Printf-formatting-of-float-as-hex-prints/1660844
+// XFAIL: msvc
+
+// XFAIL: LIBCXX-AIX-FIXME
+
+#include <locale>
+#include <ios>
+#include <cassert>
+#include <streambuf>
+#include <cmath>
+#include "test_macros.h"
+#include "test_iterators.h"
+
+typedef std::num_put<char, cpp17_output_iterator<char*> > F;
+
+class my_facet
+    : public F
+{
+public:
+    explicit my_facet(std::size_t refs = 0)
+        : F(refs) {}
+};
+
+class my_numpunct
+    : public std::numpunct<char>
+{
+public:
+    my_numpunct() : std::numpunct<char>() {}
+
+protected:
+    virtual char_type do_decimal_point() const {return ';';}
+    virtual char_type do_thousands_sep() const {return '_';}
+    virtual std::string do_grouping() const {return std::string("\1\2\3");}
+};
+
+void test1()
+{
+    char str[200];
+    std::locale lc = std::locale::classic();
+    std::locale lg(lc, new my_numpunct);
+    const my_facet f(1);
+    {
+        long double v = -0.;
+        std::ios ios(0);
+        std::hexfloat(ios);
+        // %a
+        {
+            ios.precision(0);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            ios.precision(1);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            ios.precision(6);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0p+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0x0p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0.p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0.p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0x0;p+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0x0;p+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0P+0******************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "******************-0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-******************0X0P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0.P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0.P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-0X0;P+0*****************");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*****************-0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "-*****************0X0;P+0");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            ios.precision(16);
+            {
+            }
+            ios.precision(60);
+            {
+            }
+        }
+    }
+}
+
+void test2()
+{
+    std::locale lc = std::locale::classic();
+    std::locale lg(lc, new my_numpunct);
+#if (defined(__APPLE__) || defined(TEST_HAS_GLIBC) || defined(__MINGW32__)) && defined(__x86_64__)
+// This test is failing on FreeBSD, possibly due to 
diff erent representations
+// of the floating point numbers.
+// This test is failing in MSVC environments, where long double is equal to regular
+// double, and instead of "0x9.32c05a44p+27", this prints "0x1.26580b4880000p+30".
+    const my_facet f(1);
+    char str[200];
+    {
+        long double v = 1234567890.125;
+        std::ios ios(0);
+        std::hexfloat(ios);
+        // %a
+        {
+            ios.precision(0);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                                ios.width(0);
+                            ios.imbue(lc);
+                            {
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            ios.precision(1);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            ios.precision(6);
+            {
+            }
+            ios.precision(16);
+            {
+            }
+            ios.precision(60);
+            {
+                std::nouppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9.32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x9;32c05a44p+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0x*********9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9.32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9.32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0x9;32c05a44p+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0x9;32c05a44p+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+                std::uppercase(ios);
+                {
+                    std::noshowpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9.32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X9;32C05A44P+27*********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "*********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "0X*********9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                    std::showpos(ios);
+                    {
+                        std::noshowpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                        std::showpoint(ios);
+                        {
+                            ios.imbue(lc);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9.32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9.32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                            ios.imbue(lg);
+                            {
+                                ios.width(0);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::left(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+0X9;32C05A44P+27********");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::right(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "********+0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                                ios.width(25);
+                                std::internal(ios);
+                                {
+                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
+                                    std::string ex(str, iter.base());
+                                    assert(ex == "+********0X9;32C05A44P+27");
+                                    assert(ios.width() == 0);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+#endif
+}
+
+int main(int, char**)
+{
+    test1();
+    test2();
+
+    return 0;
+}

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.pass.cpp
index 2eebc1cabc958..a433734ade263 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.pass.cpp
@@ -12,22 +12,7 @@
 
 // iter_type put(iter_type s, ios_base& iob, char_type fill, long double v) const;
 
-// FIXME: The printf functions in Microsoft's CRT have a couple quirks in
-// corner cases, failing this test:
-// - With the Microsoft UCRT, printf("%#.*g", 0, 0.0) produces "0.0" while
-//   other C runtimes produce "0.". For other precisions than 0, Microsoft's
-//   consistently produce one digit more than others. In the MinGW test setups,
-//   the code is built with __USE_MINGW_ANSI_STDIO=1, which uses MinGW's own
-//   reimplementation of stdio functions, which doesn't have this issue.
-//   This bug requires excluding everything that runs with showpoint() enabled.
-//   https://developercommunity.visualstudio.com/t/printf-formatting-with-g-outputs-too/1660837
-//   This issue is fixed in newer UCRT versions, since 10.0.19041.0.
-// - With the Microsoft UCRT, printf("%a", 0.0) produces "0x0.0000000000000p+0"
-//   while other C runtimes produce just "0x0p+0". This requires omitting all
-//   tests of hex float formatting.
-//   https://developercommunity.visualstudio.com/t/Printf-formatting-of-float-as-hex-prints/1660844
-// XFAIL: msvc
-
+// XFAIL: win32-broken-printf-g-precision
 // XFAIL: LIBCXX-AIX-FIXME
 
 #include <locale>
@@ -22632,3588 +22617,6 @@ void test10()
     }
 }
 
-void test11()
-{
-    char str[200];
-    std::locale lc = std::locale::classic();
-    std::locale lg(lc, new my_numpunct);
-    const my_facet f(1);
-    {
-        long double v = -0.;
-        std::ios ios(0);
-        std::hexfloat(ios);
-        // %a
-        {
-            ios.precision(0);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            ios.precision(1);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            ios.precision(6);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0p+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0x0p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0.p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0.p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0x0;p+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0x0;p+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0P+0******************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "******************-0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-******************0X0P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0.P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0.P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-0X0;P+0*****************");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*****************-0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "-*****************0X0;P+0");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            ios.precision(16);
-            {
-            }
-            ios.precision(60);
-            {
-            }
-        }
-    }
-}
-
-void test12()
-{
-    std::locale lc = std::locale::classic();
-    std::locale lg(lc, new my_numpunct);
-#if (defined(__APPLE__) || defined(TEST_HAS_GLIBC) || defined(__MINGW32__)) && defined(__x86_64__)
-// This test is failing on FreeBSD, possibly due to 
diff erent representations
-// of the floating point numbers.
-    const my_facet f(1);
-    char str[200];
-    {
-        long double v = 1234567890.125;
-        std::ios ios(0);
-        std::hexfloat(ios);
-        // %a
-        {
-            ios.precision(0);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                                ios.width(0);
-                            ios.imbue(lc);
-                            {
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            ios.precision(1);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            ios.precision(6);
-            {
-            }
-            ios.precision(16);
-            {
-            }
-            ios.precision(60);
-            {
-                std::nouppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9.32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x9;32c05a44p+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0x*********9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9.32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9.32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0x9;32c05a44p+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0x9;32c05a44p+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-                std::uppercase(ios);
-                {
-                    std::noshowpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9.32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X9;32C05A44P+27*********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "*********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "0X*********9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                    std::showpos(ios);
-                    {
-                        std::noshowpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                        std::showpoint(ios);
-                        {
-                            ios.imbue(lc);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9.32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9.32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                            ios.imbue(lg);
-                            {
-                                ios.width(0);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::left(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+0X9;32C05A44P+27********");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::right(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "********+0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                                ios.width(25);
-                                std::internal(ios);
-                                {
-                                    cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
-                                    assert(ex == "+********0X9;32C05A44P+27");
-                                    assert(ios.width() == 0);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-#endif
-}
-
 int main(int, char**)
 {
     test1();
@@ -26226,8 +22629,6 @@ int main(int, char**)
     test8();
     test9();
     test10();
-    test11();
-    test12();
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);

diff  --git a/libcxx/utils/libcxx/test/features.py b/libcxx/utils/libcxx/test/features.py
index e98d759dfc2b7..1c1d4fda97b84 100644
--- a/libcxx/utils/libcxx/test/features.py
+++ b/libcxx/utils/libcxx/test/features.py
@@ -85,6 +85,19 @@
             }
           """)),
 
+  # Check for a Windows UCRT bug (fixed in UCRT/Windows 10.0.19041.0).
+  # https://developercommunity.visualstudio.com/t/printf-formatting-with-g-outputs-too/1660837
+  Feature(name='win32-broken-printf-g-precision',
+          when=lambda cfg: '_WIN32' in compilerMacros(cfg) and not programSucceeds(cfg, """
+            #include <stdio.h>
+            #include <string.h>
+            int main(int, char**) {
+              char buf[100];
+              snprintf(buf, sizeof(buf), "%#.*g", 0, 0.0);
+              return strcmp(buf, "0.");
+            }
+          """)),
+
   # Whether Bash can run on the executor.
   # This is not always the case, for example when running on embedded systems.
   #


        


More information about the libcxx-commits mailing list