[libcxx-commits] [libcxx] 5e97d37 - [libc++][NFC] Use cpp17_output_iterator in tests.

Mark de Wever via libcxx-commits libcxx-commits at lists.llvm.org
Thu Feb 3 23:01:40 PST 2022


Author: Mark de Wever
Date: 2022-02-04T08:01:20+01:00
New Revision: 5e97d37b960840cabf32dfef3503b28ba5d21dc2

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

LOG: [libc++][NFC] Use cpp17_output_iterator in tests.

The renames the output_iterator to cpp17_output_iterator. These
iterators are still used in C++20 so it's not possible to change the
current type to the new C++20 requirements. This is done in a similar
fashion as the cpp17_input_iterator.

Reviewed By: #libc, Quuxplusone, ldionne

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

Added: 
    

Modified: 
    libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_input_iterator.compile.pass.cpp
    libcxx/test/libcxx/iterators/contiguous_iterators.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.fail.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.stable.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
    libcxx/test/std/algorithms/alg.sorting/alg.merge/merge.pass.cpp
    libcxx/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp
    libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference.pass.cpp
    libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference_comp.pass.cpp
    libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp
    libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp
    libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference.pass.cpp
    libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference_comp.pass.cpp
    libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp
    libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp
    libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp
    libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
    libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp
    libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp
    libcxx/test/std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp
    libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_count.pass.cpp
    libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/iterator_sentinel.pass.cpp
    libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/range.pass.cpp
    libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator.pass.cpp
    libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator_count.pass.cpp
    libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.output/output_iterator.compile.pass.cpp
    libcxx/test/std/iterators/predef.iterators/iterators.common/iterator_traits.compile.pass.cpp
    libcxx/test/std/iterators/predef.iterators/iterators.common/plus_plus.pass.cpp
    libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp
    libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
    libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp
    libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp
    libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_bool.pass.cpp
    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.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_long.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long_long.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.put.byname/put1.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put1.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp
    libcxx/test/std/numerics/numeric.ops/adjacent.difference/adjacent_difference.pass.cpp
    libcxx/test/std/numerics/numeric.ops/adjacent.difference/adjacent_difference_op.pass.cpp
    libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp
    libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp
    libcxx/test/std/ranges/range.adaptors/range.counted/counted.pass.cpp
    libcxx/test/std/ranges/range.req/range.refinements/output_range.compile.pass.cpp
    libcxx/test/std/re/re.alg/re.alg.replace/test1.pass.cpp
    libcxx/test/std/re/re.alg/re.alg.replace/test2.pass.cpp
    libcxx/test/std/re/re.results/re.results.form/form1.pass.cpp
    libcxx/test/std/re/re.results/re.results.form/form2.pass.cpp
    libcxx/test/support/test_iterators.h

Removed: 
    


################################################################################
diff  --git a/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_input_iterator.compile.pass.cpp b/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_input_iterator.compile.pass.cpp
index 03e655284cc4a..b170af27f5c1b 100644
--- a/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_input_iterator.compile.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_input_iterator.compile.pass.cpp
@@ -26,6 +26,6 @@ struct InputProxyIterator {
 };
 
 static_assert(std::ranges::__nothrow_input_iterator<cpp20_input_iterator<int*>>);
-static_assert(!std::ranges::__nothrow_input_iterator<output_iterator<int*>>);
+static_assert(!std::ranges::__nothrow_input_iterator<cpp17_output_iterator<int*>>);
 static_assert(std::input_iterator<InputProxyIterator>);
 static_assert(!std::ranges::__nothrow_input_iterator<InputProxyIterator>);

diff  --git a/libcxx/test/libcxx/iterators/contiguous_iterators.pass.cpp b/libcxx/test/libcxx/iterators/contiguous_iterators.pass.cpp
index dcb573c7a86ff..892ea2ff535a0 100644
--- a/libcxx/test/libcxx/iterators/contiguous_iterators.pass.cpp
+++ b/libcxx/test/libcxx/iterators/contiguous_iterators.pass.cpp
@@ -198,7 +198,7 @@ int main(int, char**)
 #endif
 
 //  iterators in the libc++ test suite
-    static_assert((!std::__is_cpp17_contiguous_iterator<output_iterator       <char *> >::value), "");
+    static_assert((!std::__is_cpp17_contiguous_iterator<cpp17_output_iterator <char *> >::value), "");
     static_assert((!std::__is_cpp17_contiguous_iterator<cpp17_input_iterator  <char *> >::value), "");
     static_assert((!std::__is_cpp17_contiguous_iterator<forward_iterator      <char *> >::value), "");
     static_assert((!std::__is_cpp17_contiguous_iterator<bidirectional_iterator<char *> >::value), "");

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
index 19f11de555ee8..f3a7090787d6a 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
@@ -37,31 +37,31 @@ test_copy()
 TEST_CONSTEXPR_CXX20 bool
 test()
 {
-    test_copy<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test_copy<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test_copy<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test_copy<cpp17_input_iterator<const int*>, int*>();
 
-    test_copy<forward_iterator<const int*>, output_iterator<int*> >();
+    test_copy<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy<forward_iterator<const int*>, forward_iterator<int*> >();
     test_copy<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy<forward_iterator<const int*>, random_access_iterator<int*> >();
     test_copy<forward_iterator<const int*>, int*>();
 
-    test_copy<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test_copy<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test_copy<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test_copy<bidirectional_iterator<const int*>, int*>();
 
-    test_copy<random_access_iterator<const int*>, output_iterator<int*> >();
+    test_copy<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy<random_access_iterator<const int*>, forward_iterator<int*> >();
     test_copy<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test_copy<random_access_iterator<const int*>, int*>();
 
-    test_copy<const int*, output_iterator<int*> >();
+    test_copy<const int*, cpp17_output_iterator<int*> >();
     test_copy<const int*, forward_iterator<int*> >();
     test_copy<const int*, bidirectional_iterator<int*> >();
     test_copy<const int*, random_access_iterator<int*> >();
@@ -74,7 +74,7 @@ test()
     test_copy<random_access_iterator<const int*>, contiguous_iterator<int*>>();
     test_copy<const int*, contiguous_iterator<int*>>();
 
-    test_copy<contiguous_iterator<const int*>, output_iterator<int*>>();
+    test_copy<contiguous_iterator<const int*>, cpp17_output_iterator<int*>>();
     test_copy<contiguous_iterator<const int*>, forward_iterator<int*>>();
     test_copy<contiguous_iterator<const int*>, bidirectional_iterator<int*>>();
     test_copy<contiguous_iterator<const int*>, random_access_iterator<int*>>();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp
index acb1e00260251..57214e65455b4 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp
@@ -44,35 +44,35 @@ test_copy_if()
 TEST_CONSTEXPR_CXX20 bool
 test()
 {
-    test_copy_if<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test_copy_if<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy_if<cpp17_input_iterator<const int*>, cpp17_input_iterator<int*> >();
     test_copy_if<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test_copy_if<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy_if<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test_copy_if<cpp17_input_iterator<const int*>, int*>();
 
-    test_copy_if<forward_iterator<const int*>, output_iterator<int*> >();
+    test_copy_if<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy_if<forward_iterator<const int*>, cpp17_input_iterator<int*> >();
     test_copy_if<forward_iterator<const int*>, forward_iterator<int*> >();
     test_copy_if<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy_if<forward_iterator<const int*>, random_access_iterator<int*> >();
     test_copy_if<forward_iterator<const int*>, int*>();
 
-    test_copy_if<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test_copy_if<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy_if<bidirectional_iterator<const int*>, cpp17_input_iterator<int*> >();
     test_copy_if<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test_copy_if<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy_if<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test_copy_if<bidirectional_iterator<const int*>, int*>();
 
-    test_copy_if<random_access_iterator<const int*>, output_iterator<int*> >();
+    test_copy_if<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy_if<random_access_iterator<const int*>, cpp17_input_iterator<int*> >();
     test_copy_if<random_access_iterator<const int*>, forward_iterator<int*> >();
     test_copy_if<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy_if<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test_copy_if<random_access_iterator<const int*>, int*>();
 
-    test_copy_if<const int*, output_iterator<int*> >();
+    test_copy_if<const int*, cpp17_output_iterator<int*> >();
     test_copy_if<const int*, cpp17_input_iterator<int*> >();
     test_copy_if<const int*, forward_iterator<int*> >();
     test_copy_if<const int*, bidirectional_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
index 06f2efd565fc4..fa425c736570a 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
@@ -40,35 +40,35 @@ test_copy_n()
 TEST_CONSTEXPR_CXX20 bool
 test()
 {
-    test_copy_n<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test_copy_n<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy_n<cpp17_input_iterator<const int*>, cpp17_input_iterator<int*> >();
     test_copy_n<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test_copy_n<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy_n<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test_copy_n<cpp17_input_iterator<const int*>, int*>();
 
-    test_copy_n<forward_iterator<const int*>, output_iterator<int*> >();
+    test_copy_n<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy_n<forward_iterator<const int*>, cpp17_input_iterator<int*> >();
     test_copy_n<forward_iterator<const int*>, forward_iterator<int*> >();
     test_copy_n<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy_n<forward_iterator<const int*>, random_access_iterator<int*> >();
     test_copy_n<forward_iterator<const int*>, int*>();
 
-    test_copy_n<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test_copy_n<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy_n<bidirectional_iterator<const int*>, cpp17_input_iterator<int*> >();
     test_copy_n<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test_copy_n<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy_n<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test_copy_n<bidirectional_iterator<const int*>, int*>();
 
-    test_copy_n<random_access_iterator<const int*>, output_iterator<int*> >();
+    test_copy_n<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test_copy_n<random_access_iterator<const int*>, cpp17_input_iterator<int*> >();
     test_copy_n<random_access_iterator<const int*>, forward_iterator<int*> >();
     test_copy_n<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test_copy_n<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test_copy_n<random_access_iterator<const int*>, int*>();
 
-    test_copy_n<const int*, output_iterator<int*> >();
+    test_copy_n<const int*, cpp17_output_iterator<int*> >();
     test_copy_n<const int*, cpp17_input_iterator<int*> >();
     test_copy_n<const int*, forward_iterator<int*> >();
     test_copy_n<const int*, bidirectional_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
index 7d6ee36cc93b6..6bb784201b896 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
@@ -147,13 +147,13 @@ void test6()
 
 int main(int, char**)
 {
-    test_char<output_iterator<char*> >();
+    test_char<cpp17_output_iterator<char*> >();
     test_char<forward_iterator<char*> >();
     test_char<bidirectional_iterator<char*> >();
     test_char<random_access_iterator<char*> >();
     test_char<char*>();
 
-    test_int<output_iterator<int*> >();
+    test_int<cpp17_output_iterator<int*> >();
     test_int<forward_iterator<int*> >();
     test_int<bidirectional_iterator<int*> >();
     test_int<random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
index 8b9d3368a2509..5e0837e3f003f 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
@@ -58,62 +58,62 @@ test1()
 
 int main(int, char**)
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();
     test<const int*, int*>();
 
 #if TEST_STD_VER >= 11
-    test1<cpp17_input_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+    test1<cpp17_input_iterator<std::unique_ptr<int>*>, cpp17_output_iterator<std::unique_ptr<int>*> >();
     test1<cpp17_input_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
     test1<cpp17_input_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
     test1<cpp17_input_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
     test1<cpp17_input_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
 
-    test1<forward_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+    test1<forward_iterator<std::unique_ptr<int>*>, cpp17_output_iterator<std::unique_ptr<int>*> >();
     test1<forward_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
     test1<forward_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
     test1<forward_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
     test1<forward_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
 
-    test1<bidirectional_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+    test1<bidirectional_iterator<std::unique_ptr<int>*>, cpp17_output_iterator<std::unique_ptr<int>*> >();
     test1<bidirectional_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
     test1<bidirectional_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
     test1<bidirectional_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
     test1<bidirectional_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
 
-    test1<random_access_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+    test1<random_access_iterator<std::unique_ptr<int>*>, cpp17_output_iterator<std::unique_ptr<int>*> >();
     test1<random_access_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
     test1<random_access_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
     test1<random_access_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
     test1<random_access_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
 
-    test1<std::unique_ptr<int>*, output_iterator<std::unique_ptr<int>*> >();
+    test1<std::unique_ptr<int>*, cpp17_output_iterator<std::unique_ptr<int>*> >();
     test1<std::unique_ptr<int>*, forward_iterator<std::unique_ptr<int>*> >();
     test1<std::unique_ptr<int>*, bidirectional_iterator<std::unique_ptr<int>*> >();
     test1<std::unique_ptr<int>*, random_access_iterator<std::unique_ptr<int>*> >();
@@ -126,7 +126,7 @@ int main(int, char**)
     test<bidirectional_iterator<const int*>, contiguous_iterator<int*>>();
     test<random_access_iterator<const int*>, contiguous_iterator<int*>>();
     test<const int*, contiguous_iterator<int*>>();
-    test<contiguous_iterator<const int*>, output_iterator<int*>>();
+    test<contiguous_iterator<const int*>, cpp17_output_iterator<int*>>();
     test<contiguous_iterator<const int*>, forward_iterator<int*>>();
     test<contiguous_iterator<const int*>, bidirectional_iterator<int*>>();
     test<contiguous_iterator<const int*>, random_access_iterator<int*>>();
@@ -138,7 +138,7 @@ int main(int, char**)
     test1<bidirectional_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
     test1<random_access_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
     test1<std::unique_ptr<int>*, contiguous_iterator<std::unique_ptr<int>*>>();
-    test1<contiguous_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*>>();
+    test1<contiguous_iterator<std::unique_ptr<int>*>, cpp17_output_iterator<std::unique_ptr<int>*>>();
     test1<contiguous_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*>>();
     test1<contiguous_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*>>();
     test1<contiguous_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*>>();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
index 77401872d98bb..027abd2bc071a 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
@@ -49,10 +49,10 @@ int main(int, char**)
         const int ia[] = {1, 2, 3, 4, 6, 8, 5, 7};
         int r1[10] = {0};
         int r2[10] = {0};
-        typedef std::pair<output_iterator<int*>,  int*> P;
+        typedef std::pair<cpp17_output_iterator<int*>,  int*> P;
         P p = std::partition_copy(cpp17_input_iterator<const int*>(std::begin(ia)),
                                   cpp17_input_iterator<const int*>(std::end(ia)),
-                                  output_iterator<int*>(r1), r2, is_odd());
+                                  cpp17_output_iterator<int*>(r1), r2, is_odd());
         assert(p.first.base() == r1 + 4);
         assert(r1[0] == 1);
         assert(r1[1] == 3);

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.fail.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.fail.cpp
index 9a4d1bb4bbe18..4f184d4738df1 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.fail.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.fail.cpp
@@ -36,7 +36,7 @@ int main(int, char**) {
   // expected-error-re@*:* {{static_assert failed{{( due to requirement '.*')?}} "SampleIterator must meet the requirements of RandomAccessIterator"}}
   // expected-error@*:* 2 {{does not provide a subscript operator}}
   // expected-error@*:* {{invalid operands}}
-  test<cpp17_input_iterator<int *>, output_iterator<int *> >();
+  test<cpp17_input_iterator<int *>, cpp17_output_iterator<int *> >();
 
   return 0;
 }

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.pass.cpp
index 8a86aa6b369cd..50283947ceaef 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.pass.cpp
@@ -138,23 +138,23 @@ void test_small_population() {
 
 int main(int, char**) {
   test<cpp17_input_iterator, int, random_access_iterator, int>();
-  test<forward_iterator, int, output_iterator, int>();
+  test<forward_iterator, int, cpp17_output_iterator, int>();
   test<forward_iterator, int, random_access_iterator, int>();
 
   test<cpp17_input_iterator, int, random_access_iterator, double>();
-  test<forward_iterator, int, output_iterator, double>();
+  test<forward_iterator, int, cpp17_output_iterator, double>();
   test<forward_iterator, int, random_access_iterator, double>();
 
   test_empty_population<cpp17_input_iterator, int, random_access_iterator, int>();
-  test_empty_population<forward_iterator, int, output_iterator, int>();
+  test_empty_population<forward_iterator, int, cpp17_output_iterator, int>();
   test_empty_population<forward_iterator, int, random_access_iterator, int>();
 
   test_empty_sample<cpp17_input_iterator, int, random_access_iterator, int>();
-  test_empty_sample<forward_iterator, int, output_iterator, int>();
+  test_empty_sample<forward_iterator, int, cpp17_output_iterator, int>();
   test_empty_sample<forward_iterator, int, random_access_iterator, int>();
 
   test_small_population<cpp17_input_iterator, int, random_access_iterator, int>();
-  test_small_population<forward_iterator, int, output_iterator, int>();
+  test_small_population<forward_iterator, int, cpp17_output_iterator, int>();
   test_small_population<forward_iterator, int, random_access_iterator, int>();
 
   return 0;

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.stable.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.stable.pass.cpp
index aaf081af9c6ce..99ae6873bf623 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.stable.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.stable.pass.cpp
@@ -50,7 +50,7 @@ void test_stability(bool expect_stable) {
 }
 
 int main(int, char**) {
-  test_stability<forward_iterator<int *>, output_iterator<int *> >(true);
+  test_stability<forward_iterator<int *>, cpp17_output_iterator<int *> >(true);
   test_stability<cpp17_input_iterator<int *>, random_access_iterator<int *> >(false);
 
   return 0;

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
index 9011a557a8655..1a0313d0b2b39 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
@@ -52,31 +52,31 @@ test()
 
 int main(int, char**)
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
index b7a433d5645c0..d2ad3f2d2d5df 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
@@ -57,31 +57,31 @@ test()
 
 int main(int, char**)
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
index e4dd3bd6d8cb1..00f869889a422 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
@@ -56,31 +56,31 @@ test()
 
 int main(int, char**)
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
index e7c16f40d9243..795181bbbd18d 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
@@ -60,31 +60,31 @@ test()
 
 int main(int, char**)
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
index be3e6afd0472a..150ade52de896 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
@@ -74,19 +74,19 @@ test()
 
 int main(int, char**)
 {
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
index 8acb1a129e386..cba0d3b1b7a95 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
@@ -125,19 +125,19 @@ TEST_CONSTEXPR_CXX20 void test() {
 }
 
 TEST_CONSTEXPR_CXX20 bool all_tests() {
-  test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+  test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
   test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
   test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
   test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
   test<bidirectional_iterator<const int*>, int*>();
 
-  test<random_access_iterator<const int*>, output_iterator<int*> >();
+  test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
   test<random_access_iterator<const int*>, forward_iterator<int*> >();
   test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
   test<random_access_iterator<const int*>, random_access_iterator<int*> >();
   test<random_access_iterator<const int*>, int*>();
 
-  test<const int*, output_iterator<int*> >();
+  test<const int*, cpp17_output_iterator<int*> >();
   test<const int*, forward_iterator<int*> >();
   test<const int*, bidirectional_iterator<int*> >();
   test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
index 77e444b790f30..7ad94e3331bf1 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
@@ -58,175 +58,175 @@ test()
 
 int main(int, char**)
 {
-    test<cpp17_input_iterator<const int*>, cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, cpp17_input_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, cpp17_input_iterator<const int*>, int*>();
 
-    test<cpp17_input_iterator<const int*>, forward_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<const int*>, int*>();
 
-    test<cpp17_input_iterator<const int*>, bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<const int*>, int*>();
 
-    test<cpp17_input_iterator<const int*>, random_access_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<const int*>, int*>();
 
-    test<cpp17_input_iterator<const int*>, const int*, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, const int*, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, const int*, cpp17_input_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, const int*, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, const int*, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, const int*, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, const int*, int*>();
 
-    test<forward_iterator<const int*>, cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, cpp17_input_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<forward_iterator<const int*>, cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, random_access_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, const int*, output_iterator<int*> >();
+    test<forward_iterator<const int*>, const int*, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, const int*, cpp17_input_iterator<int*> >();
     test<forward_iterator<const int*>, const int*, forward_iterator<int*> >();
     test<forward_iterator<const int*>, const int*, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, const int*, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, const int*, int*>();
 
-    test<bidirectional_iterator<const int*>, cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, cpp17_input_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<bidirectional_iterator<const int*>, cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, cpp17_input_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, forward_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, const int*, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, const int*, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, const int*, cpp17_input_iterator<int*> >();
     test<bidirectional_iterator<const int*>, const int*, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, const int*, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, const int*, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, const int*, int*>();
 
-    test<random_access_iterator<const int*>, cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, cpp17_input_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<random_access_iterator<const int*>, cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, cpp17_input_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, forward_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, const int*, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, const int*, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, const int*, cpp17_input_iterator<int*> >();
     test<random_access_iterator<const int*>, const int*, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, const int*, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, const int*, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, const int*, int*>();
 
-    test<const int*, cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<const int*, cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<const int*, cpp17_input_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<const int*, cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<const int*, cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<const int*, cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<const int*, cpp17_input_iterator<const int*>, int*>();
 
-    test<const int*, forward_iterator<const int*>, output_iterator<int*> >();
+    test<const int*, forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<const int*, forward_iterator<const int*>, forward_iterator<int*> >();
     test<const int*, forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<const int*, forward_iterator<const int*>, random_access_iterator<int*> >();
     test<const int*, forward_iterator<const int*>, int*>();
 
-    test<const int*, bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<const int*, bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<const int*, bidirectional_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<const int*, bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<const int*, bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<const int*, bidirectional_iterator<const int*>, int*>();
 
-    test<const int*, random_access_iterator<const int*>, output_iterator<int*> >();
+    test<const int*, random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<const int*, random_access_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<const int*, random_access_iterator<const int*>, forward_iterator<int*> >();
     test<const int*, random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<const int*, random_access_iterator<const int*>, int*>();
 
-    test<const int*, const int*, output_iterator<int*> >();
+    test<const int*, const int*, cpp17_output_iterator<int*> >();
     test<const int*, const int*, cpp17_input_iterator<int*> >();
     test<const int*, const int*, forward_iterator<int*> >();
     test<const int*, const int*, bidirectional_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
index 3a5cf3bed3a84..8cf9667f757f6 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
@@ -59,35 +59,35 @@ test()
 
 int main(int, char**)
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, cpp17_input_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, cpp17_input_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
index 6271ac1751d2f..bda304cd74937 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
@@ -107,31 +107,31 @@ test()
 
 int main(int, char**)
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
index 3d3d5f728255a..e7d76a3343766 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
@@ -135,31 +135,31 @@ test()
 
 int main(int, char**)
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/algorithms/alg.sorting/alg.merge/merge.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.merge/merge.pass.cpp
index 28fc8c4801176..e3e58c1268e55 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.merge/merge.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.merge/merge.pass.cpp
@@ -52,7 +52,7 @@ TEST_CONSTEXPR_CXX20 void test4()
 template<class T, class Iter1, class Iter2>
 TEST_CONSTEXPR_CXX20 void test3()
 {
-    test4<T, Iter1, Iter2, output_iterator<T*> >();
+    test4<T, Iter1, Iter2, cpp17_output_iterator<T*> >();
     test4<T, Iter1, Iter2, forward_iterator<T*> >();
     test4<T, Iter1, Iter2, bidirectional_iterator<T*> >();
     test4<T, Iter1, Iter2, random_access_iterator<T*> >();

diff  --git a/libcxx/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp
index 2472f9f2e7417..9a855b82afecd 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp
@@ -53,7 +53,7 @@ TEST_CONSTEXPR_CXX20 void test4()
 template<class T, class Iter1, class Iter2>
 TEST_CONSTEXPR_CXX20 void test3()
 {
-    test4<T, Iter1, Iter2, output_iterator<T*> >();
+    test4<T, Iter1, Iter2, cpp17_output_iterator<T*> >();
     test4<T, Iter1, Iter2, forward_iterator<T*> >();
     test4<T, Iter1, Iter2, bidirectional_iterator<T*> >();
     test4<T, Iter1, Iter2, random_access_iterator<T*> >();

diff  --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.
diff erence/set_
diff erence.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.
diff erence/set_
diff erence.pass.cpp
index d35740a009c2a..f82aaae21b72c 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.
diff erence/set_
diff erence.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.
diff erence/set_
diff erence.pass.cpp
@@ -52,7 +52,7 @@ TEST_CONSTEXPR_CXX20 void test4()
 template<class T, class Iter1, class Iter2>
 TEST_CONSTEXPR_CXX20 void test3()
 {
-    test4<T, Iter1, Iter2, output_iterator<T*> >();
+    test4<T, Iter1, Iter2, cpp17_output_iterator<T*> >();
     test4<T, Iter1, Iter2, forward_iterator<T*> >();
     test4<T, Iter1, Iter2, bidirectional_iterator<T*> >();
     test4<T, Iter1, Iter2, random_access_iterator<T*> >();

diff  --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.
diff erence/set_
diff erence_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.
diff erence/set_
diff erence_comp.pass.cpp
index bfe0755e69d9b..b025ce5cd380a 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.
diff erence/set_
diff erence_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.
diff erence/set_
diff erence_comp.pass.cpp
@@ -53,7 +53,7 @@ TEST_CONSTEXPR_CXX20 void test4()
 template<class T, class Iter1, class Iter2>
 TEST_CONSTEXPR_CXX20 void test3()
 {
-    test4<T, Iter1, Iter2, output_iterator<T*> >();
+    test4<T, Iter1, Iter2, cpp17_output_iterator<T*> >();
     test4<T, Iter1, Iter2, forward_iterator<T*> >();
     test4<T, Iter1, Iter2, bidirectional_iterator<T*> >();
     test4<T, Iter1, Iter2, random_access_iterator<T*> >();

diff  --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp
index c900d8f1dd00f..1422bea739eb1 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp
@@ -52,7 +52,7 @@ TEST_CONSTEXPR_CXX20 void test4()
 template<class T, class Iter1, class Iter2>
 TEST_CONSTEXPR_CXX20 void test3()
 {
-    test4<T, Iter1, Iter2, output_iterator<T*> >();
+    test4<T, Iter1, Iter2, cpp17_output_iterator<T*> >();
     test4<T, Iter1, Iter2, forward_iterator<T*> >();
     test4<T, Iter1, Iter2, bidirectional_iterator<T*> >();
     test4<T, Iter1, Iter2, random_access_iterator<T*> >();

diff  --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp
index 0a2ff1fca78c6..07e4079e62dbf 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp
@@ -53,7 +53,7 @@ TEST_CONSTEXPR_CXX20 void test4()
 template<class T, class Iter1, class Iter2>
 TEST_CONSTEXPR_CXX20 void test3()
 {
-    test4<T, Iter1, Iter2, output_iterator<T*> >();
+    test4<T, Iter1, Iter2, cpp17_output_iterator<T*> >();
     test4<T, Iter1, Iter2, forward_iterator<T*> >();
     test4<T, Iter1, Iter2, bidirectional_iterator<T*> >();
     test4<T, Iter1, Iter2, random_access_iterator<T*> >();

diff  --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.
diff erence/set_symmetric_
diff erence.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.
diff erence/set_symmetric_
diff erence.pass.cpp
index 6bd3d976d3fac..51418d12dfcfb 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.
diff erence/set_symmetric_
diff erence.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.
diff erence/set_symmetric_
diff erence.pass.cpp
@@ -52,7 +52,7 @@ TEST_CONSTEXPR_CXX20 void test4()
 template<class T, class Iter1, class Iter2>
 TEST_CONSTEXPR_CXX20 void test3()
 {
-    test4<T, Iter1, Iter2, output_iterator<T*> >();
+    test4<T, Iter1, Iter2, cpp17_output_iterator<T*> >();
     test4<T, Iter1, Iter2, forward_iterator<T*> >();
     test4<T, Iter1, Iter2, bidirectional_iterator<T*> >();
     test4<T, Iter1, Iter2, random_access_iterator<T*> >();

diff  --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.
diff erence/set_symmetric_
diff erence_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.
diff erence/set_symmetric_
diff erence_comp.pass.cpp
index 314588536e747..146ed233dec80 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.
diff erence/set_symmetric_
diff erence_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.
diff erence/set_symmetric_
diff erence_comp.pass.cpp
@@ -53,7 +53,7 @@ TEST_CONSTEXPR_CXX20 void test4()
 template<class T, class Iter1, class Iter2>
 TEST_CONSTEXPR_CXX20 void test3()
 {
-    test4<T, Iter1, Iter2, output_iterator<T*> >();
+    test4<T, Iter1, Iter2, cpp17_output_iterator<T*> >();
     test4<T, Iter1, Iter2, forward_iterator<T*> >();
     test4<T, Iter1, Iter2, bidirectional_iterator<T*> >();
     test4<T, Iter1, Iter2, random_access_iterator<T*> >();

diff  --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp
index c16555e173b51..06bd15bb8519d 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp
@@ -52,7 +52,7 @@ TEST_CONSTEXPR_CXX20 void test4()
 template<class T, class Iter1, class Iter2>
 TEST_CONSTEXPR_CXX20 void test3()
 {
-    test4<T, Iter1, Iter2, output_iterator<T*> >();
+    test4<T, Iter1, Iter2, cpp17_output_iterator<T*> >();
     test4<T, Iter1, Iter2, forward_iterator<T*> >();
     test4<T, Iter1, Iter2, bidirectional_iterator<T*> >();
     test4<T, Iter1, Iter2, random_access_iterator<T*> >();

diff  --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp
index f7a0bddbfebe0..cafd6d65162b9 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp
@@ -53,7 +53,7 @@ TEST_CONSTEXPR_CXX20 void test4()
 template<class T, class Iter1, class Iter2>
 TEST_CONSTEXPR_CXX20 void test3()
 {
-    test4<T, Iter1, Iter2, output_iterator<T*> >();
+    test4<T, Iter1, Iter2, cpp17_output_iterator<T*> >();
     test4<T, Iter1, Iter2, forward_iterator<T*> >();
     test4<T, Iter1, Iter2, bidirectional_iterator<T*> >();
     test4<T, Iter1, Iter2, random_access_iterator<T*> >();

diff  --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp
index 799c89c681c3f..b2dd3c95731c9 100644
--- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp
@@ -359,7 +359,7 @@ void test_sfinae()
     static_assert(has_append<It>(), "");
   }
   {
-    using It = output_iterator<const char*>;
+    using It = cpp17_output_iterator<const char*>;
     static_assert(!has_append<It>(), "");
 
   }

diff  --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
index 235c3c6baa946..68ef55d7f0fd6 100644
--- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
@@ -206,7 +206,7 @@ void test_sfinae() {
     static_assert(has_assign<It>(), "");
   }
   {
-    using It = output_iterator<const char*>;
+    using It = cpp17_output_iterator<const char*>;
     static_assert(!std::is_assignable<path, It>::value, "");
     static_assert(!has_assign<It>(), "");
 

diff  --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp
index 3442e30484d16..1c91759f2f3e5 100644
--- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp
@@ -327,7 +327,7 @@ void test_sfinae() {
     static_assert(has_concat<It>(), "");
   }
   {
-    using It = output_iterator<const char*>;
+    using It = cpp17_output_iterator<const char*>;
     static_assert(!has_concat<It>(), "");
   }
   {

diff  --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp
index 64cebeb7eea2a..c97e4ddd1d04b 100644
--- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp
@@ -114,7 +114,7 @@ void test_sfinae() {
     static_assert(std::is_constructible<path, It>::value, "");
   }
   {
-    using It = output_iterator<const char*>;
+    using It = cpp17_output_iterator<const char*>;
     static_assert(!std::is_constructible<path, It>::value, "");
 
   }

diff  --git a/libcxx/test/std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp
index 45e3ab9d7711a..4cc64b0638de2 100644
--- a/libcxx/test/std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp
@@ -572,7 +572,7 @@ static_assert(std::same_as<InputTestIteratorTraits::reference, int&>);
 static_assert(std::same_as<InputTestIteratorTraits::pointer, int*>);
 static_assert(!has_iterator_concept_v<InputTestIteratorTraits>);
 
-using OutputTestIteratorTraits = std::iterator_traits<output_iterator<int*>>;
+using OutputTestIteratorTraits = std::iterator_traits<cpp17_output_iterator<int*>>;
 static_assert(std::same_as<OutputTestIteratorTraits::iterator_category, std::output_iterator_tag>);
 static_assert(std::same_as<OutputTestIteratorTraits::value_type, void>);
 static_assert(std::same_as<OutputTestIteratorTraits::
diff erence_type, std::ptr
diff _t>);

diff  --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_count.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_count.pass.cpp
index f8da9e7c1e0dd..9763279a9bbf5 100644
--- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_count.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_count.pass.cpp
@@ -55,7 +55,7 @@ constexpr bool test() {
     check<true,  random_access_iterator<int*>>(range, n, range+n);
     check<true,  contiguous_iterator<int*>>(   range, n, range+n);
     check<true,  int*>(                        range, n, range+n);
-    check<true,  output_iterator<int*> >(      range, n, range+n);
+    check<true,  cpp17_output_iterator<int*> >(range, n, range+n);
   }
 
   // Check advancing backward

diff  --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/iterator_sentinel.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/iterator_sentinel.pass.cpp
index d15fcc7404cb2..6f5bd5f57663e 100644
--- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/iterator_sentinel.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/iterator_sentinel.pass.cpp
@@ -166,7 +166,7 @@ constexpr bool test() {
   }
 
   test_unsized<cpp17_input_iterator<int*>, sentinel_wrapper<cpp17_input_iterator<int*>>>();
-  test_unsized<output_iterator<int*>, sentinel_wrapper<output_iterator<int*>>>();
+  test_unsized<cpp17_output_iterator<int*>, sentinel_wrapper<cpp17_output_iterator<int*>>>();
   test_unsized<forward_iterator<int*>, sentinel_wrapper<forward_iterator<int*>>>();
   test_unsized<bidirectional_iterator<int*>, sentinel_wrapper<bidirectional_iterator<int*>>>();
   test_unsized<random_access_iterator<int*>, sentinel_wrapper<random_access_iterator<int*>>>();
@@ -178,7 +178,7 @@ constexpr bool test() {
 
   test_sized<cpp17_input_iterator<int*>, sized_sentinel<cpp17_input_iterator<int*>>>();
   test_sized<cpp20_input_iterator<int*>, sized_sentinel<cpp20_input_iterator<int*>>>();
-  test_sized<output_iterator<int*>, sized_sentinel<output_iterator<int*>>>();
+  test_sized<cpp17_output_iterator<int*>, sized_sentinel<cpp17_output_iterator<int*>>>();
   test_sized<forward_iterator<int*>, sized_sentinel<forward_iterator<int*>>>();
   test_sized<bidirectional_iterator<int*>, sized_sentinel<bidirectional_iterator<int*>>>();
   test_sized<random_access_iterator<int*>, sized_sentinel<random_access_iterator<int*>>>();

diff  --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/range.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/range.pass.cpp
index a2fd83822eda7..b347369584214 100644
--- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/range.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/range.pass.cpp
@@ -78,7 +78,7 @@ constexpr bool test() {
   }
   test_ordinary<cpp17_input_iterator<int*>, sentinel_wrapper<cpp17_input_iterator<int*>>>();
   test_ordinary<cpp20_input_iterator<int*>, sentinel_wrapper<cpp20_input_iterator<int*>>>();
-  test_ordinary<output_iterator<int*>, sentinel_wrapper<output_iterator<int*>>>();
+  test_ordinary<cpp17_output_iterator<int*>, sentinel_wrapper<cpp17_output_iterator<int*>>>();
   test_ordinary<forward_iterator<int*>, sentinel_wrapper<forward_iterator<int*>>>();
   test_ordinary<bidirectional_iterator<int*>, sentinel_wrapper<bidirectional_iterator<int*>>>();
   test_ordinary<random_access_iterator<int*>, sentinel_wrapper<random_access_iterator<int*>>>();
@@ -87,7 +87,7 @@ constexpr bool test() {
 
   test_ordinary<cpp17_input_iterator<int*>, sized_sentinel<cpp17_input_iterator<int*>>>();
   test_ordinary<cpp20_input_iterator<int*>, sized_sentinel<cpp20_input_iterator<int*>>>();
-  test_ordinary<output_iterator<int*>, sized_sentinel<output_iterator<int*>>>();
+  test_ordinary<cpp17_output_iterator<int*>, sized_sentinel<cpp17_output_iterator<int*>>>();
   test_ordinary<forward_iterator<int*>, sized_sentinel<forward_iterator<int*>>>();
   test_ordinary<bidirectional_iterator<int*>, sized_sentinel<bidirectional_iterator<int*>>>();
   test_ordinary<random_access_iterator<int*>, sized_sentinel<random_access_iterator<int*>>>();

diff  --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator.pass.cpp
index 972b410cf2f2f..dc2893dff80d7 100644
--- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator.pass.cpp
@@ -36,7 +36,7 @@ constexpr bool test() {
     check<bidirectional_iterator<int*>>(range+n, range+n+1);
     check<random_access_iterator<int*>>(range+n, range+n+1);
     check<contiguous_iterator<int*>>(   range+n, range+n+1);
-    check<output_iterator<int*>>(       range+n, range+n+1);
+    check<cpp17_output_iterator<int*>>( range+n, range+n+1);
     check<int*>(                        range+n, range+n+1);
   }
 

diff  --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator_count.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator_count.pass.cpp
index 0bc400dde1b44..6fd542c3be615 100644
--- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator_count.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator_count.pass.cpp
@@ -38,7 +38,7 @@ constexpr bool test() {
     check<random_access_iterator<int*>>(range, n, range+n);
     check<contiguous_iterator<int*>>(   range, n, range+n);
     check<int*>(                        range, n, range+n);
-    check<output_iterator<int*> >(      range, n, range+n);
+    check<cpp17_output_iterator<int*> >(range, n, range+n);
   }
 
   // Check next() backward

diff  --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.output/output_iterator.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.output/output_iterator.compile.pass.cpp
index d797698876f2e..84ec78d8dae2e 100644
--- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.output/output_iterator.compile.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.output/output_iterator.compile.pass.cpp
@@ -20,14 +20,14 @@
 struct T { };
 struct DerivedFromT : T { };
 
-static_assert( std::output_iterator<output_iterator<int*>, int>);
-static_assert( std::output_iterator<output_iterator<int*>, short>);
-static_assert( std::output_iterator<output_iterator<int*>, long>);
-static_assert( std::output_iterator<output_iterator<T*>, T>);
-static_assert(!std::output_iterator<output_iterator<T const*>, T>);
-static_assert( std::output_iterator<output_iterator<T*>, T const>);
-static_assert( std::output_iterator<output_iterator<T*>, DerivedFromT>);
-static_assert(!std::output_iterator<output_iterator<DerivedFromT*>, T>);
+static_assert( std::output_iterator<cpp17_output_iterator<int*>, int>);
+static_assert( std::output_iterator<cpp17_output_iterator<int*>, short>);
+static_assert( std::output_iterator<cpp17_output_iterator<int*>, long>);
+static_assert( std::output_iterator<cpp17_output_iterator<T*>, T>);
+static_assert(!std::output_iterator<cpp17_output_iterator<T const*>, T>);
+static_assert( std::output_iterator<cpp17_output_iterator<T*>, T const>);
+static_assert( std::output_iterator<cpp17_output_iterator<T*>, DerivedFromT>);
+static_assert(!std::output_iterator<cpp17_output_iterator<DerivedFromT*>, T>);
 
 // Not satisfied when the iterator is not an input_or_output_iterator
 static_assert(!std::output_iterator<void, int>);

diff  --git a/libcxx/test/std/iterators/predef.iterators/iterators.common/iterator_traits.compile.pass.cpp b/libcxx/test/std/iterators/predef.iterators/iterators.common/iterator_traits.compile.pass.cpp
index c55285b798f30..e2f744ae420a3 100644
--- a/libcxx/test/std/iterators/predef.iterators/iterators.common/iterator_traits.compile.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/iterators.common/iterator_traits.compile.pass.cpp
@@ -59,7 +59,7 @@ void test() {
   }
   // Test with an output_iterator that has a void value_type
   {
-    using Iter = output_iterator<int*>;
+    using Iter = cpp17_output_iterator<int*>;
     using CommonIter = std::common_iterator<Iter, sentinel_type<int*>>;
     using IterTraits = std::iterator_traits<CommonIter>;
 

diff  --git a/libcxx/test/std/iterators/predef.iterators/iterators.common/plus_plus.pass.cpp b/libcxx/test/std/iterators/predef.iterators/iterators.common/plus_plus.pass.cpp
index 257c7ff5e89ef..dad40dfe09936 100644
--- a/libcxx/test/std/iterators/predef.iterators/iterators.common/plus_plus.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/iterators.common/plus_plus.pass.cpp
@@ -150,13 +150,13 @@ void test() {
     assert(commonIter1 == commonSent1);
   }
 
-  // Increment a common_iterator<output_iterator>: iter_value_t is not always valid for
-  // output iterators (it isn't for our test output_iterator). This is worth testing
+  // Increment a common_iterator<cpp17_output_iterator>: iter_value_t is not always valid for
+  // output iterators (it isn't for our test cpp17_output_iterator). This is worth testing
   // because it gets tricky when we define operator++(int).
   {
     int buffer[] = {0, 1, 2, 3, 4};
-    using Common = std::common_iterator<output_iterator<int*>, sentinel_type<int*>>;
-    auto iter = Common(output_iterator<int*>(buffer));
+    using Common = std::common_iterator<cpp17_output_iterator<int*>, sentinel_type<int*>>;
+    auto iter = Common(cpp17_output_iterator<int*>(buffer));
     auto sent = Common(sentinel_type<int*>{buffer + 5});
 
     *iter++ = 90;

diff  --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp
index d74f25bb7d9a9..e968019448d6b 100644
--- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp
@@ -25,7 +25,7 @@
 
 #include "platform_support.h" // locale name macros
 
-typedef std::money_put<char, output_iterator<char*> > Fn;
+typedef std::money_put<char, cpp17_output_iterator<char*> > Fn;
 
 class my_facet
     : public Fn
@@ -36,7 +36,7 @@ class my_facet
 };
 
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
-typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
+typedef std::money_put<wchar_t, cpp17_output_iterator<wchar_t*> > Fw;
 
 class my_facetw
     : public Fw
@@ -67,32 +67,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0.00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0.01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1,234,567.89");
     }
@@ -100,8 +96,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "$0.00");
     }
@@ -109,8 +104,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-$0.01");
     }
@@ -118,8 +112,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "$1,234,567.89");
     }
@@ -127,8 +120,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-$1,234,567.89");
     }
@@ -138,8 +130,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-$1,234,567.89      ");
         assert(ios.width() == 0);
@@ -150,8 +141,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-$      1,234,567.89");
         assert(ios.width() == 0);
@@ -162,8 +152,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "      -$1,234,567.89");
         assert(ios.width() == 0);
@@ -175,32 +164,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0.00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0.01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1,234,567.89");
     }
@@ -208,8 +193,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "USD 0.00");
     }
@@ -217,8 +201,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-USD 0.01");
     }
@@ -226,8 +209,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "USD 1,234,567.89");
     }
@@ -235,8 +217,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-USD 1,234,567.89");
     }
@@ -246,8 +227,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-USD 1,234,567.89   ");
         assert(ios.width() == 0);
@@ -258,8 +238,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-USD    1,234,567.89");
         assert(ios.width() == 0);
@@ -270,8 +249,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "   -USD 1,234,567.89");
         assert(ios.width() == 0);
@@ -286,32 +264,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0.00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0.01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1,234,567.89");
     }
@@ -319,8 +293,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"$0.00");
     }
@@ -328,8 +301,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-$0.01");
     }
@@ -337,8 +309,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"$1,234,567.89");
     }
@@ -346,8 +317,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-$1,234,567.89");
     }
@@ -357,8 +327,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-$1,234,567.89      ");
         assert(ios.width() == 0);
@@ -369,8 +338,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-$      1,234,567.89");
         assert(ios.width() == 0);
@@ -381,8 +349,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"      -$1,234,567.89");
         assert(ios.width() == 0);
@@ -394,32 +361,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0.00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0.01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1,234,567.89");
     }
@@ -427,8 +390,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"USD 0.00");
     }
@@ -436,8 +398,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-USD 0.01");
     }
@@ -445,8 +406,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"USD 1,234,567.89");
     }
@@ -454,8 +414,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-USD 1,234,567.89");
     }
@@ -465,8 +424,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-USD 1,234,567.89   ");
         assert(ios.width() == 0);
@@ -477,8 +435,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-USD    1,234,567.89");
         assert(ios.width() == 0);
@@ -489,8 +446,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"   -USD 1,234,567.89");
         assert(ios.width() == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
index 78e0e148e7692..835d35681b867 100644
--- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
@@ -32,7 +32,7 @@
 #include "platform_support.h" // locale name macros
 #include "test_macros.h"
 
-typedef std::money_put<char, output_iterator<char*> > Fn;
+typedef std::money_put<char, cpp17_output_iterator<char*> > Fn;
 
 class my_facet
     : public Fn
@@ -43,7 +43,7 @@ class my_facet
 };
 
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
-typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
+typedef std::money_put<wchar_t, cpp17_output_iterator<wchar_t*> > Fw;
 
 class my_facetw
     : public Fw
@@ -103,32 +103,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0,00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0,01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1 234 567,89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89");
     }
@@ -136,8 +132,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0,00 \u20ac");
     }
@@ -145,8 +140,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0,01 \u20ac");
     }
@@ -154,8 +148,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1 234 567,89 \u20ac");
     }
@@ -163,8 +156,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 \u20ac");
     }
@@ -174,8 +166,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 \u20ac   ");
         assert(ios.width() == 0);
@@ -186,8 +177,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89    \u20ac");
         assert(ios.width() == 0);
@@ -198,8 +188,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "   -1 234 567,89 \u20ac");
         assert(ios.width() == 0);
@@ -211,32 +200,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0,00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0,01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1 234 567,89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89");
     }
@@ -244,8 +229,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0,00 EUR");
     }
@@ -253,8 +237,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0,01 EUR");
     }
@@ -262,8 +245,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1 234 567,89 EUR");
     }
@@ -271,8 +253,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 EUR");
     }
@@ -282,8 +263,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 EUR   ");
         assert(ios.width() == 0);
@@ -294,8 +274,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89    EUR");
         assert(ios.width() == 0);
@@ -306,8 +285,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "   -1 234 567,89 EUR");
         assert(ios.width() == 0);
@@ -322,32 +300,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0,00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0,01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"1 234 567,89"));
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"-1 234 567,89"));
     }
@@ -355,8 +329,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0,00 \u20ac");
     }
@@ -364,8 +337,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0,01 \u20ac");
     }
@@ -373,8 +345,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"1 234 567,89 \u20ac"));
     }
@@ -382,8 +353,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"-1 234 567,89 \u20ac"));
     }
@@ -393,8 +363,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"-1 234 567,89 \u20ac     "));
         assert(ios.width() == 0);
@@ -405,8 +374,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"-1 234 567,89      \u20ac"));
         assert(ios.width() == 0);
@@ -417,8 +385,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"     -1 234 567,89 \u20ac"));
         assert(ios.width() == 0);
@@ -430,32 +397,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0,00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0,01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"1 234 567,89"));
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"-1 234 567,89"));
     }
@@ -463,8 +426,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0,00 EUR");
     }
@@ -472,8 +434,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0,01 EUR");
     }
@@ -481,8 +442,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"1 234 567,89 EUR"));
     }
@@ -490,8 +450,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"-1 234 567,89 EUR"));
     }
@@ -501,8 +460,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"-1 234 567,89 EUR   "));
         assert(ios.width() == 0);
@@ -513,8 +471,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"-1 234 567,89    EUR"));
         assert(ios.width() == 0);
@@ -525,8 +482,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == convert_thousands_sep(L"   -1 234 567,89 EUR"));
         assert(ios.width() == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp
index 81b2b394e092e..8ed268c6970c9 100644
--- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp
@@ -48,7 +48,7 @@
 #   define APPLE_FIXME
 #endif
 
-typedef std::money_put<char, output_iterator<char*> > Fn;
+typedef std::money_put<char, cpp17_output_iterator<char*> > Fn;
 
 class my_facet
     : public Fn
@@ -59,7 +59,7 @@ class my_facet
 };
 
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
-typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
+typedef std::money_put<wchar_t, cpp17_output_iterator<wchar_t*> > Fw;
 
 class my_facetw
     : public Fw
@@ -91,32 +91,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0,00 ");
     }
     {   // negative one
         long double v = -1;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0,01 ");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1 234 567,89 ");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 ");
     }
@@ -125,8 +121,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0,00 \xD1\x80\xD1\x83\xD0\xB1"".");
     }
@@ -134,8 +129,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0,01 \xD1\x80\xD1\x83\xD0\xB1"".");
     }
@@ -143,8 +137,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1 234 567,89 \xD1\x80\xD1\x83\xD0\xB1"".");
     }
@@ -152,8 +145,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 \xD1\x80\xD1\x83\xD0\xB1"".");
     }
@@ -163,8 +155,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 \xD1\x80\xD1\x83\xD0\xB1"".");
         assert(ios.width() == 0);
@@ -175,8 +166,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 \xD1\x80\xD1\x83\xD0\xB1"".");
         assert(ios.width() == 0);
@@ -187,8 +177,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 \xD1\x80\xD1\x83\xD0\xB1"".");
         assert(ios.width() == 0);
@@ -201,32 +190,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0,00 ");
     }
     {   // negative one
         long double v = -1;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0,01 ");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1 234 567,89 ");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 ");
     }
@@ -234,8 +219,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0,00 RUB ");
     }
@@ -243,8 +227,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0,01 RUB ");
     }
@@ -252,8 +235,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1 234 567,89 RUB ");
     }
@@ -261,8 +243,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 RUB ");
     }
@@ -273,8 +254,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 RUB   ");
         assert(ios.width() == 0);
@@ -286,8 +266,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89   RUB ");
         assert(ios.width() == 0);
@@ -298,8 +277,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "  -1 234 567,89 RUB ");
         assert(ios.width() == 0);
@@ -316,32 +294,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0,00 ");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0,01 ");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"1 234 567,89 ");
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1 234 567,89 ");
     }
@@ -350,8 +324,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0,00 \x440\x443\x431"".");
     }
@@ -359,8 +332,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0,01 \x440\x443\x431"".");
     }
@@ -368,8 +340,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"1 234 567,89 \x440\x443\x431"".");
     }
@@ -377,8 +348,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1 234 567,89 \x440\x443\x431"".");
     }
@@ -388,8 +358,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1 234 567,89 \x440\x443\x431"".  ");
         assert(ios.width() == 0);
@@ -400,8 +369,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1 234 567,89   \x440\x443\x431"".");
         assert(ios.width() == 0);
@@ -412,8 +380,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"  -1 234 567,89 \x440\x443\x431"".");
         assert(ios.width() == 0);
@@ -426,32 +393,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0,00 ");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0,01 ");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"1 234 567,89 ");
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1 234 567,89 ");
     }
@@ -459,8 +422,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0,00 RUB ");
     }
@@ -468,8 +430,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0,01 RUB ");
     }
@@ -477,8 +438,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"1 234 567,89 RUB ");
     }
@@ -486,8 +446,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1 234 567,89 RUB ");
     }
@@ -498,8 +457,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1 234 567,89 RUB   ");
         assert(ios.width() == 0);
@@ -511,8 +469,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1 234 567,89   RUB ");
         assert(ios.width() == 0);
@@ -523,8 +480,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"  -1 234 567,89 RUB ");
         assert(ios.width() == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp
index 321487542e4f0..20badb5285461 100644
--- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp
@@ -33,7 +33,7 @@
 
 #include "platform_support.h" // locale name macros
 
-typedef std::money_put<char, output_iterator<char*> > Fn;
+typedef std::money_put<char, cpp17_output_iterator<char*> > Fn;
 
 class my_facet
     : public Fn
@@ -44,7 +44,7 @@ class my_facet
 };
 
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
-typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
+typedef std::money_put<wchar_t, cpp17_output_iterator<wchar_t*> > Fw;
 
 class my_facetw
     : public Fw
@@ -75,32 +75,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0.00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0.01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1,234,567.89");
     }
@@ -108,8 +104,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "\xEF\xBF\xA5""0.00");
     }
@@ -117,8 +112,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "\xEF\xBF\xA5""-0.01");
     }
@@ -126,8 +120,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "\xEF\xBF\xA5""1,234,567.89");
     }
@@ -135,8 +128,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "\xEF\xBF\xA5""-1,234,567.89");
     }
@@ -146,8 +138,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "\xEF\xBF\xA5""-1,234,567.89    ");
         assert(ios.width() == 0);
@@ -158,8 +149,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "\xEF\xBF\xA5""-    1,234,567.89");
         assert(ios.width() == 0);
@@ -170,8 +160,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "    \xEF\xBF\xA5""-1,234,567.89");
         assert(ios.width() == 0);
@@ -183,32 +172,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0.00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0.01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1,234,567.89");
     }
@@ -216,8 +201,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "CNY 0.00");
     }
@@ -225,8 +209,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "CNY -0.01");
     }
@@ -234,8 +217,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "CNY 1,234,567.89");
     }
@@ -243,8 +225,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "CNY -1,234,567.89");
     }
@@ -254,8 +235,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "CNY -1,234,567.89   ");
         assert(ios.width() == 0);
@@ -266,8 +246,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "CNY -   1,234,567.89");
         assert(ios.width() == 0);
@@ -278,8 +257,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "   CNY -1,234,567.89");
         assert(ios.width() == 0);
@@ -294,32 +272,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0.00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0.01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1,234,567.89");
     }
@@ -327,8 +301,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"\xFFE5""0.00");
     }
@@ -336,8 +309,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"\xFFE5""-0.01");
     }
@@ -345,8 +317,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"\xFFE5""1,234,567.89");
     }
@@ -354,8 +325,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"\xFFE5""-1,234,567.89");
     }
@@ -365,8 +335,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"\xFFE5""-1,234,567.89      ");
         assert(ios.width() == 0);
@@ -377,8 +346,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"\xFFE5""-      1,234,567.89");
         assert(ios.width() == 0);
@@ -389,8 +357,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"      \xFFE5""-1,234,567.89");
         assert(ios.width() == 0);
@@ -402,32 +369,28 @@ int main(int, char**)
     {   // zero
         long double v = 0;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0.00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0.01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1,234,567.89");
     }
@@ -435,8 +398,7 @@ int main(int, char**)
         long double v = 0;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"CNY 0.00");
     }
@@ -444,8 +406,7 @@ int main(int, char**)
         long double v = -1;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"CNY -0.01");
     }
@@ -453,8 +414,7 @@ int main(int, char**)
         long double v = 123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"CNY 1,234,567.89");
     }
@@ -462,8 +422,7 @@ int main(int, char**)
         long double v = -123456789;
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"CNY -1,234,567.89");
     }
@@ -473,8 +432,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"CNY -1,234,567.89   ");
         assert(ios.width() == 0);
@@ -485,8 +443,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"CNY -   1,234,567.89");
         assert(ios.width() == 0);
@@ -497,8 +454,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"   CNY -1,234,567.89");
         assert(ios.width() == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp
index 1f300ef70dce5..02e609efa0501 100644
--- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp
@@ -26,7 +26,7 @@
 
 #include "platform_support.h" // locale name macros
 
-typedef std::money_put<char, output_iterator<char*> > Fn;
+typedef std::money_put<char, cpp17_output_iterator<char*> > Fn;
 
 class my_facet
     : public Fn
@@ -37,7 +37,7 @@ class my_facet
 };
 
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
-typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
+typedef std::money_put<wchar_t, cpp17_output_iterator<wchar_t*> > Fw;
 
 class my_facetw
     : public Fw
@@ -68,32 +68,28 @@ int main(int, char**)
     {   // zero
         std::string v = "0";
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0.00");
     }
     {   // negative one
         std::string v = "-1";
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0.01");
     }
     {   // positive
         std::string v = "123456789";
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1,234,567.89");
     }
     {   // negative
         std::string v = "-123456789";
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1,234,567.89");
     }
@@ -101,8 +97,7 @@ int main(int, char**)
         std::string v = "0";
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "$0.00");
     }
@@ -110,8 +105,7 @@ int main(int, char**)
         std::string v = "-1";
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-$0.01");
     }
@@ -119,8 +113,7 @@ int main(int, char**)
         std::string v = "123456789";
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "$1,234,567.89");
     }
@@ -128,8 +121,7 @@ int main(int, char**)
         std::string v = "-123456789";
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-$1,234,567.89");
     }
@@ -139,8 +131,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-$1,234,567.89      ");
         assert(ios.width() == 0);
@@ -151,8 +142,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-$      1,234,567.89");
         assert(ios.width() == 0);
@@ -163,8 +153,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "      -$1,234,567.89");
         assert(ios.width() == 0);
@@ -176,32 +165,28 @@ int main(int, char**)
     {   // zero
         std::string v = "0";
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0.00");
     }
     {   // negative one
         std::string v = "-1";
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-0.01");
     }
     {   // positive
         std::string v = "123456789";
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1,234,567.89");
     }
     {   // negative
         std::string v = "-123456789";
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1,234,567.89");
     }
@@ -209,8 +194,7 @@ int main(int, char**)
         std::string v = "0";
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "USD 0.00");
     }
@@ -218,8 +202,7 @@ int main(int, char**)
         std::string v = "-1";
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-USD 0.01");
     }
@@ -227,8 +210,7 @@ int main(int, char**)
         std::string v = "123456789";
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "USD 1,234,567.89");
     }
@@ -236,8 +218,7 @@ int main(int, char**)
         std::string v = "-123456789";
         showbase(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-USD 1,234,567.89");
     }
@@ -247,8 +228,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-USD 1,234,567.89   ");
         assert(ios.width() == 0);
@@ -259,8 +239,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "-USD    1,234,567.89");
         assert(ios.width() == 0);
@@ -271,8 +250,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         char str[100];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
         std::string ex(str, iter.base());
         assert(ex == "   -USD 1,234,567.89");
         assert(ios.width() == 0);
@@ -287,32 +265,28 @@ int main(int, char**)
     {   // zero
         std::wstring v = L"0";
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0.00");
     }
     {   // negative one
         std::wstring v = L"-1";
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0.01");
     }
     {   // positive
         std::wstring v = L"123456789";
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         std::wstring v = L"-123456789";
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1,234,567.89");
     }
@@ -320,8 +294,7 @@ int main(int, char**)
         std::wstring v = L"0";
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"$0.00");
     }
@@ -329,8 +302,7 @@ int main(int, char**)
         std::wstring v = L"-1";
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-$0.01");
     }
@@ -338,8 +310,7 @@ int main(int, char**)
         std::wstring v = L"123456789";
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"$1,234,567.89");
     }
@@ -347,8 +318,7 @@ int main(int, char**)
         std::wstring v = L"-123456789";
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-$1,234,567.89");
     }
@@ -358,8 +328,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-$1,234,567.89      ");
         assert(ios.width() == 0);
@@ -370,8 +339,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-$      1,234,567.89");
         assert(ios.width() == 0);
@@ -382,8 +350,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            false, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"      -$1,234,567.89");
         assert(ios.width() == 0);
@@ -395,32 +362,28 @@ int main(int, char**)
     {   // zero
         std::wstring v = L"0";
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"0.00");
     }
     {   // negative one
         std::wstring v = L"-1";
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-0.01");
     }
     {   // positive
         std::wstring v = L"123456789";
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         std::wstring v = L"-123456789";
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-1,234,567.89");
     }
@@ -428,8 +391,7 @@ int main(int, char**)
         std::wstring v = L"0";
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"USD 0.00");
     }
@@ -437,8 +399,7 @@ int main(int, char**)
         std::wstring v = L"-1";
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-USD 0.01");
     }
@@ -446,8 +407,7 @@ int main(int, char**)
         std::wstring v = L"123456789";
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"USD 1,234,567.89");
     }
@@ -455,8 +415,7 @@ int main(int, char**)
         std::wstring v = L"-123456789";
         showbase(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, '*', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-USD 1,234,567.89");
     }
@@ -466,8 +425,7 @@ int main(int, char**)
         ios.width(20);
         left(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-USD 1,234,567.89   ");
         assert(ios.width() == 0);
@@ -478,8 +436,7 @@ int main(int, char**)
         ios.width(20);
         internal(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"-USD    1,234,567.89");
         assert(ios.width() == 0);
@@ -490,8 +447,7 @@ int main(int, char**)
         ios.width(20);
         right(ios);
         wchar_t str[100];
-        output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
-                                            true, ios, ' ', v);
+        cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
         std::wstring ex(str, iter.base());
         assert(ex == L"   -USD 1,234,567.89");
         assert(ios.width() == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_bool.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_bool.pass.cpp
index 2ca1eeb3775dd..5d0c7c1052327 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_bool.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_bool.pass.cpp
@@ -19,7 +19,7 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-typedef std::num_put<char, output_iterator<char*> > F;
+typedef std::num_put<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -48,14 +48,14 @@ int main(int, char**)
         {
             bool v = false;
             char str[50];
-            output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+            cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
             std::string ex(str, iter.base());
             assert(ex == "0");
         }
         {
             bool v = true;
             char str[50];
-            output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+            cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
             std::string ex(str, iter.base());
             assert(ex == "1");
         }
@@ -66,14 +66,14 @@ int main(int, char**)
         {
             bool v = false;
             char str[50];
-            output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+            cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
             std::string ex(str, iter.base());
             assert(ex == "false");
         }
         {
             bool v = true;
             char str[50];
-            output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+            cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
             std::string ex(str, iter.base());
             assert(ex == "true");
         }
@@ -85,14 +85,14 @@ int main(int, char**)
         {
             bool v = false;
             char str[50];
-            output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+            cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
             std::string ex(str, iter.base());
             assert(ex == "no");
         }
         {
             bool v = true;
             char str[50];
-            output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+            cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
             std::string ex(str, iter.base());
             assert(ex == "yes");
         }

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 260fed10de595..84d918816fc02 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
@@ -26,7 +26,7 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-typedef std::num_put<char, output_iterator<char*> > F;
+typedef std::num_put<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -51,7 +51,7 @@ class my_numpunct
 void test1()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -72,7 +72,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -80,7 +80,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -88,7 +88,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -96,7 +96,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -106,7 +106,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -114,7 +114,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -122,7 +122,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -130,7 +130,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -143,7 +143,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -151,7 +151,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -159,7 +159,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -167,7 +167,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -177,7 +177,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -185,7 +185,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -193,7 +193,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -201,7 +201,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -217,7 +217,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -225,7 +225,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -233,7 +233,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -241,7 +241,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -251,7 +251,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -259,7 +259,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -267,7 +267,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -275,7 +275,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -288,7 +288,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -296,7 +296,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -304,7 +304,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -312,7 +312,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -322,7 +322,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -330,7 +330,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -338,7 +338,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -346,7 +346,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -365,7 +365,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -373,7 +373,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -381,7 +381,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -389,7 +389,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -399,7 +399,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -407,7 +407,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -415,7 +415,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -423,7 +423,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -436,7 +436,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -444,7 +444,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -452,7 +452,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -460,7 +460,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -470,7 +470,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -478,7 +478,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -486,7 +486,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -494,7 +494,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -510,7 +510,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -518,7 +518,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -526,7 +526,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -534,7 +534,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -544,7 +544,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -552,7 +552,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -560,7 +560,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -568,7 +568,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -581,7 +581,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -589,7 +589,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -597,7 +597,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -605,7 +605,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -615,7 +615,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -623,7 +623,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -631,7 +631,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -639,7 +639,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -661,7 +661,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -669,7 +669,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -677,7 +677,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -685,7 +685,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -695,7 +695,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -703,7 +703,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -711,7 +711,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -719,7 +719,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -732,7 +732,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -740,7 +740,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -748,7 +748,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -756,7 +756,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -766,7 +766,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -774,7 +774,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -782,7 +782,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -790,7 +790,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -806,7 +806,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -814,7 +814,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -822,7 +822,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -830,7 +830,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -840,7 +840,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -848,7 +848,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -856,7 +856,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -864,7 +864,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -877,7 +877,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -885,7 +885,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -893,7 +893,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -901,7 +901,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -911,7 +911,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -919,7 +919,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -927,7 +927,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -935,7 +935,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -954,7 +954,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -962,7 +962,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -970,7 +970,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -978,7 +978,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -988,7 +988,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -996,7 +996,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1004,7 +1004,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1012,7 +1012,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1025,7 +1025,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -1033,7 +1033,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -1041,7 +1041,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -1049,7 +1049,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -1059,7 +1059,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -1067,7 +1067,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -1075,7 +1075,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -1083,7 +1083,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -1099,7 +1099,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1107,7 +1107,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1115,7 +1115,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1123,7 +1123,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1133,7 +1133,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1141,7 +1141,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1149,7 +1149,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1157,7 +1157,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1170,7 +1170,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -1178,7 +1178,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -1186,7 +1186,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -1194,7 +1194,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -1204,7 +1204,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -1212,7 +1212,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -1220,7 +1220,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -1228,7 +1228,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -1250,7 +1250,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1258,7 +1258,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1266,7 +1266,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1274,7 +1274,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1284,7 +1284,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1292,7 +1292,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1300,7 +1300,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1308,7 +1308,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1321,7 +1321,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000");
                                     assert(ios.width() == 0);
@@ -1329,7 +1329,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000******************");
                                     assert(ios.width() == 0);
@@ -1337,7 +1337,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
@@ -1345,7 +1345,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
@@ -1355,7 +1355,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000");
                                     assert(ios.width() == 0);
@@ -1363,7 +1363,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000******************");
                                     assert(ios.width() == 0);
@@ -1371,7 +1371,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
@@ -1379,7 +1379,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
@@ -1395,7 +1395,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1403,7 +1403,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1411,7 +1411,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1419,7 +1419,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1429,7 +1429,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1437,7 +1437,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1445,7 +1445,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1453,7 +1453,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1466,7 +1466,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000");
                                     assert(ios.width() == 0);
@@ -1474,7 +1474,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000*****************");
                                     assert(ios.width() == 0);
@@ -1482,7 +1482,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+0.00000");
                                     assert(ios.width() == 0);
@@ -1490,7 +1490,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************0.00000");
                                     assert(ios.width() == 0);
@@ -1500,7 +1500,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000");
                                     assert(ios.width() == 0);
@@ -1508,7 +1508,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000*****************");
                                     assert(ios.width() == 0);
@@ -1516,7 +1516,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+0;00000");
                                     assert(ios.width() == 0);
@@ -1524,7 +1524,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************0;00000");
                                     assert(ios.width() == 0);
@@ -1543,7 +1543,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1551,7 +1551,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1559,7 +1559,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1567,7 +1567,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1577,7 +1577,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1585,7 +1585,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1593,7 +1593,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1601,7 +1601,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1614,7 +1614,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000");
                                     assert(ios.width() == 0);
@@ -1622,7 +1622,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000******************");
                                     assert(ios.width() == 0);
@@ -1630,7 +1630,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
@@ -1638,7 +1638,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
@@ -1648,7 +1648,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000");
                                     assert(ios.width() == 0);
@@ -1656,7 +1656,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000******************");
                                     assert(ios.width() == 0);
@@ -1664,7 +1664,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
@@ -1672,7 +1672,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
@@ -1688,7 +1688,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1696,7 +1696,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1704,7 +1704,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1712,7 +1712,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1722,7 +1722,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1730,7 +1730,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1738,7 +1738,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1746,7 +1746,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1759,7 +1759,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000");
                                     assert(ios.width() == 0);
@@ -1767,7 +1767,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000*****************");
                                     assert(ios.width() == 0);
@@ -1775,7 +1775,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+0.00000");
                                     assert(ios.width() == 0);
@@ -1783,7 +1783,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************0.00000");
                                     assert(ios.width() == 0);
@@ -1793,7 +1793,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000");
                                     assert(ios.width() == 0);
@@ -1801,7 +1801,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000*****************");
                                     assert(ios.width() == 0);
@@ -1809,7 +1809,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+0;00000");
                                     assert(ios.width() == 0);
@@ -1817,7 +1817,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************0;00000");
                                     assert(ios.width() == 0);
@@ -1839,7 +1839,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1847,7 +1847,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1855,7 +1855,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1863,7 +1863,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1873,7 +1873,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1881,7 +1881,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1889,7 +1889,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1897,7 +1897,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1910,7 +1910,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000");
                                     assert(ios.width() == 0);
@@ -1918,7 +1918,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000********");
                                     assert(ios.width() == 0);
@@ -1926,7 +1926,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
@@ -1934,7 +1934,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
@@ -1944,7 +1944,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000");
                                     assert(ios.width() == 0);
@@ -1952,7 +1952,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000********");
                                     assert(ios.width() == 0);
@@ -1960,7 +1960,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
@@ -1968,7 +1968,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
@@ -1984,7 +1984,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1992,7 +1992,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2000,7 +2000,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2008,7 +2008,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2018,7 +2018,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2026,7 +2026,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2034,7 +2034,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2042,7 +2042,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2055,7 +2055,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2063,7 +2063,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000*******");
                                     assert(ios.width() == 0);
@@ -2071,7 +2071,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2079,7 +2079,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2089,7 +2089,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2097,7 +2097,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000*******");
                                     assert(ios.width() == 0);
@@ -2105,7 +2105,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2113,7 +2113,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2132,7 +2132,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2140,7 +2140,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2148,7 +2148,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2156,7 +2156,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2166,7 +2166,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2174,7 +2174,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2182,7 +2182,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2190,7 +2190,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2203,7 +2203,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2211,7 +2211,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000********");
                                     assert(ios.width() == 0);
@@ -2219,7 +2219,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2227,7 +2227,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2237,7 +2237,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2245,7 +2245,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000********");
                                     assert(ios.width() == 0);
@@ -2253,7 +2253,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2261,7 +2261,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2277,7 +2277,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2285,7 +2285,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2293,7 +2293,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2301,7 +2301,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2311,7 +2311,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2319,7 +2319,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2327,7 +2327,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2335,7 +2335,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2348,7 +2348,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2356,7 +2356,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000*******");
                                     assert(ios.width() == 0);
@@ -2364,7 +2364,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2372,7 +2372,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2382,7 +2382,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2390,7 +2390,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000*******");
                                     assert(ios.width() == 0);
@@ -2398,7 +2398,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2406,7 +2406,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2428,7 +2428,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2436,7 +2436,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2444,7 +2444,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2452,7 +2452,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2462,7 +2462,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2470,7 +2470,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2478,7 +2478,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2486,7 +2486,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2499,7 +2499,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2507,7 +2507,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2515,7 +2515,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2523,7 +2523,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2533,7 +2533,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2541,7 +2541,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2549,7 +2549,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2557,7 +2557,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2573,7 +2573,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2581,7 +2581,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2589,7 +2589,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2597,7 +2597,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2607,7 +2607,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2615,7 +2615,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2623,7 +2623,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2631,7 +2631,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2644,7 +2644,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2652,7 +2652,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2660,7 +2660,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2668,7 +2668,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2678,7 +2678,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2686,7 +2686,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2694,7 +2694,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2702,7 +2702,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2721,7 +2721,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2729,7 +2729,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2737,7 +2737,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2745,7 +2745,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2755,7 +2755,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2763,7 +2763,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2771,7 +2771,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2779,7 +2779,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2792,7 +2792,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2800,7 +2800,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2808,7 +2808,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2816,7 +2816,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2826,7 +2826,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2834,7 +2834,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2842,7 +2842,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2850,7 +2850,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2866,7 +2866,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2874,7 +2874,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2882,7 +2882,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2890,7 +2890,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2900,7 +2900,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2908,7 +2908,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2916,7 +2916,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2924,7 +2924,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2937,7 +2937,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2945,7 +2945,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2953,7 +2953,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2961,7 +2961,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2971,7 +2971,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2979,7 +2979,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2987,7 +2987,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2995,7 +2995,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -3012,7 +3012,7 @@ void test1()
 void test2()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -3033,7 +3033,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -3041,7 +3041,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -3049,7 +3049,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -3057,7 +3057,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -3067,7 +3067,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -3075,7 +3075,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -3083,7 +3083,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -3091,7 +3091,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -3104,7 +3104,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
@@ -3112,7 +3112,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
@@ -3120,7 +3120,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -3128,7 +3128,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -3138,7 +3138,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
@@ -3146,7 +3146,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
@@ -3154,7 +3154,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -3162,7 +3162,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -3178,7 +3178,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -3186,7 +3186,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -3194,7 +3194,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -3202,7 +3202,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -3212,7 +3212,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -3220,7 +3220,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -3228,7 +3228,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -3236,7 +3236,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -3249,7 +3249,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
@@ -3257,7 +3257,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
@@ -3265,7 +3265,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
@@ -3273,7 +3273,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
@@ -3283,7 +3283,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
@@ -3291,7 +3291,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
@@ -3299,7 +3299,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
@@ -3307,7 +3307,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
@@ -3326,7 +3326,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -3334,7 +3334,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -3342,7 +3342,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -3350,7 +3350,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -3360,7 +3360,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -3368,7 +3368,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -3376,7 +3376,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -3384,7 +3384,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -3397,7 +3397,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
@@ -3405,7 +3405,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
@@ -3413,7 +3413,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -3421,7 +3421,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -3431,7 +3431,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
@@ -3439,7 +3439,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
@@ -3447,7 +3447,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -3455,7 +3455,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -3471,7 +3471,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -3479,7 +3479,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -3487,7 +3487,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -3495,7 +3495,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -3505,7 +3505,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -3513,7 +3513,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -3521,7 +3521,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -3529,7 +3529,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -3542,7 +3542,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
@@ -3550,7 +3550,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
@@ -3558,7 +3558,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
@@ -3566,7 +3566,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
@@ -3576,7 +3576,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
@@ -3584,7 +3584,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
@@ -3592,7 +3592,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
@@ -3600,7 +3600,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
@@ -3622,7 +3622,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -3630,7 +3630,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -3638,7 +3638,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -3646,7 +3646,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -3656,7 +3656,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -3664,7 +3664,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -3672,7 +3672,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -3680,7 +3680,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -3693,7 +3693,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
@@ -3701,7 +3701,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
@@ -3709,7 +3709,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -3717,7 +3717,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -3727,7 +3727,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
@@ -3735,7 +3735,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
@@ -3743,7 +3743,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -3751,7 +3751,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -3767,7 +3767,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -3775,7 +3775,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -3783,7 +3783,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -3791,7 +3791,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -3801,7 +3801,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -3809,7 +3809,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -3817,7 +3817,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -3825,7 +3825,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -3838,7 +3838,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
@@ -3846,7 +3846,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
@@ -3854,7 +3854,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
@@ -3862,7 +3862,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
@@ -3872,7 +3872,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
@@ -3880,7 +3880,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
@@ -3888,7 +3888,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
@@ -3896,7 +3896,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
@@ -3915,7 +3915,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -3923,7 +3923,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -3931,7 +3931,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -3939,7 +3939,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -3949,7 +3949,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -3957,7 +3957,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -3965,7 +3965,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -3973,7 +3973,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -3986,7 +3986,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
@@ -3994,7 +3994,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
@@ -4002,7 +4002,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -4010,7 +4010,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -4020,7 +4020,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
@@ -4028,7 +4028,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
@@ -4036,7 +4036,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -4044,7 +4044,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -4060,7 +4060,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -4068,7 +4068,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -4076,7 +4076,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -4084,7 +4084,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -4094,7 +4094,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -4102,7 +4102,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -4110,7 +4110,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -4118,7 +4118,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -4131,7 +4131,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
@@ -4139,7 +4139,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
@@ -4147,7 +4147,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
@@ -4155,7 +4155,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
@@ -4165,7 +4165,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
@@ -4173,7 +4173,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
@@ -4181,7 +4181,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
@@ -4189,7 +4189,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
@@ -4211,7 +4211,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4219,7 +4219,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457e+09**************");
                                     assert(ios.width() == 0);
@@ -4227,7 +4227,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4235,7 +4235,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4245,7 +4245,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4253,7 +4253,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457e+09**************");
                                     assert(ios.width() == 0);
@@ -4261,7 +4261,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4269,7 +4269,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4282,7 +4282,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4290,7 +4290,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457e+09**************");
                                     assert(ios.width() == 0);
@@ -4298,7 +4298,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4306,7 +4306,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4316,7 +4316,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4324,7 +4324,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457e+09**************");
                                     assert(ios.width() == 0);
@@ -4332,7 +4332,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4340,7 +4340,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4356,7 +4356,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4364,7 +4364,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457e+09*************");
                                     assert(ios.width() == 0);
@@ -4372,7 +4372,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4380,7 +4380,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4390,7 +4390,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4398,7 +4398,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457e+09*************");
                                     assert(ios.width() == 0);
@@ -4406,7 +4406,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4414,7 +4414,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4427,7 +4427,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4435,7 +4435,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457e+09*************");
                                     assert(ios.width() == 0);
@@ -4443,7 +4443,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4451,7 +4451,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -4461,7 +4461,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4469,7 +4469,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457e+09*************");
                                     assert(ios.width() == 0);
@@ -4477,7 +4477,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4485,7 +4485,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -4504,7 +4504,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4512,7 +4512,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457E+09**************");
                                     assert(ios.width() == 0);
@@ -4520,7 +4520,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4528,7 +4528,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4538,7 +4538,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4546,7 +4546,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457E+09**************");
                                     assert(ios.width() == 0);
@@ -4554,7 +4554,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4562,7 +4562,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4575,7 +4575,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4583,7 +4583,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457E+09**************");
                                     assert(ios.width() == 0);
@@ -4591,7 +4591,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4599,7 +4599,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4609,7 +4609,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4617,7 +4617,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457E+09**************");
                                     assert(ios.width() == 0);
@@ -4625,7 +4625,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4633,7 +4633,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4649,7 +4649,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4657,7 +4657,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457E+09*************");
                                     assert(ios.width() == 0);
@@ -4665,7 +4665,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4673,7 +4673,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4683,7 +4683,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4691,7 +4691,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457E+09*************");
                                     assert(ios.width() == 0);
@@ -4699,7 +4699,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4707,7 +4707,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4720,7 +4720,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4728,7 +4728,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457E+09*************");
                                     assert(ios.width() == 0);
@@ -4736,7 +4736,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4744,7 +4744,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -4754,7 +4754,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4762,7 +4762,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457E+09*************");
                                     assert(ios.width() == 0);
@@ -4770,7 +4770,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4778,7 +4778,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -4800,7 +4800,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
@@ -4808,7 +4808,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
@@ -4816,7 +4816,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -4824,7 +4824,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -4834,7 +4834,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -4842,7 +4842,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
@@ -4850,7 +4850,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -4858,7 +4858,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -4871,7 +4871,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -4879,7 +4879,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -4887,7 +4887,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -4895,7 +4895,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -4905,7 +4905,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -4913,7 +4913,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -4921,7 +4921,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -4929,7 +4929,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -4945,7 +4945,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
@@ -4953,7 +4953,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
@@ -4961,7 +4961,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
@@ -4969,7 +4969,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
@@ -4979,7 +4979,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -4987,7 +4987,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
@@ -4995,7 +4995,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5003,7 +5003,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5016,7 +5016,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -5024,7 +5024,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -5032,7 +5032,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -5040,7 +5040,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -5050,7 +5050,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -5058,7 +5058,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -5066,7 +5066,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -5074,7 +5074,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -5093,7 +5093,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
@@ -5101,7 +5101,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
@@ -5109,7 +5109,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -5117,7 +5117,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -5127,7 +5127,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5135,7 +5135,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
@@ -5143,7 +5143,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5151,7 +5151,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5164,7 +5164,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -5172,7 +5172,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -5180,7 +5180,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -5188,7 +5188,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -5198,7 +5198,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -5206,7 +5206,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -5214,7 +5214,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -5222,7 +5222,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -5238,7 +5238,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
@@ -5246,7 +5246,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
@@ -5254,7 +5254,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
@@ -5262,7 +5262,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
@@ -5272,7 +5272,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5280,7 +5280,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
@@ -5288,7 +5288,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5296,7 +5296,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5309,7 +5309,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -5317,7 +5317,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -5325,7 +5325,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -5333,7 +5333,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -5343,7 +5343,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -5351,7 +5351,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -5359,7 +5359,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -5367,7 +5367,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -5389,7 +5389,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
@@ -5397,7 +5397,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
@@ -5405,7 +5405,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -5413,7 +5413,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -5423,7 +5423,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5431,7 +5431,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
@@ -5439,7 +5439,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5447,7 +5447,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5460,7 +5460,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5468,7 +5468,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5476,7 +5476,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5484,7 +5484,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5494,7 +5494,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5502,7 +5502,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5510,7 +5510,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5518,7 +5518,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5534,7 +5534,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
@@ -5542,7 +5542,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
@@ -5550,7 +5550,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
@@ -5558,7 +5558,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
@@ -5568,7 +5568,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5576,7 +5576,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
@@ -5584,7 +5584,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5592,7 +5592,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5605,7 +5605,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5613,7 +5613,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5621,7 +5621,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5629,7 +5629,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5639,7 +5639,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5647,7 +5647,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5655,7 +5655,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5663,7 +5663,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5682,7 +5682,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
@@ -5690,7 +5690,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
@@ -5698,7 +5698,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -5706,7 +5706,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -5716,7 +5716,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5724,7 +5724,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
@@ -5732,7 +5732,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5740,7 +5740,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5753,7 +5753,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5761,7 +5761,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5769,7 +5769,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5777,7 +5777,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5787,7 +5787,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5795,7 +5795,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5803,7 +5803,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5811,7 +5811,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5827,7 +5827,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
@@ -5835,7 +5835,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
@@ -5843,7 +5843,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
@@ -5851,7 +5851,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
@@ -5861,7 +5861,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5869,7 +5869,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
@@ -5877,7 +5877,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5885,7 +5885,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -5898,7 +5898,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5906,7 +5906,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5914,7 +5914,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5922,7 +5922,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5932,7 +5932,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5940,7 +5940,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5948,7 +5948,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5956,7 +5956,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5973,7 +5973,7 @@ void test2()
 void test3()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -5995,7 +5995,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -6003,7 +6003,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -6011,7 +6011,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -6019,7 +6019,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -6029,7 +6029,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -6037,7 +6037,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -6045,7 +6045,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -6053,7 +6053,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -6066,7 +6066,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -6074,7 +6074,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -6082,7 +6082,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -6090,7 +6090,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -6100,7 +6100,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -6108,7 +6108,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -6116,7 +6116,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -6124,7 +6124,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -6140,7 +6140,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -6148,7 +6148,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -6156,7 +6156,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -6164,7 +6164,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -6174,7 +6174,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -6182,7 +6182,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -6190,7 +6190,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -6198,7 +6198,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -6211,7 +6211,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -6219,7 +6219,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -6227,7 +6227,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -6235,7 +6235,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -6245,7 +6245,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -6253,7 +6253,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -6261,7 +6261,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -6269,7 +6269,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -6288,7 +6288,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -6296,7 +6296,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -6304,7 +6304,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -6312,7 +6312,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -6322,7 +6322,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -6330,7 +6330,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -6338,7 +6338,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -6346,7 +6346,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -6359,7 +6359,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -6367,7 +6367,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -6375,7 +6375,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -6383,7 +6383,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -6393,7 +6393,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -6401,7 +6401,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -6409,7 +6409,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -6417,7 +6417,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -6433,7 +6433,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -6441,7 +6441,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -6449,7 +6449,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -6457,7 +6457,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -6467,7 +6467,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -6475,7 +6475,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -6483,7 +6483,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -6491,7 +6491,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -6504,7 +6504,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -6512,7 +6512,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -6520,7 +6520,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -6528,7 +6528,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -6538,7 +6538,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -6546,7 +6546,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -6554,7 +6554,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -6562,7 +6562,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -6584,7 +6584,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
@@ -6592,7 +6592,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
@@ -6600,7 +6600,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -6608,7 +6608,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -6618,7 +6618,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
@@ -6626,7 +6626,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
@@ -6634,7 +6634,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -6642,7 +6642,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -6655,7 +6655,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
@@ -6663,7 +6663,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
@@ -6671,7 +6671,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -6679,7 +6679,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -6689,7 +6689,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
@@ -6697,7 +6697,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
@@ -6705,7 +6705,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -6713,7 +6713,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -6729,7 +6729,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
@@ -6737,7 +6737,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
@@ -6745,7 +6745,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
@@ -6753,7 +6753,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
@@ -6763,7 +6763,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
@@ -6771,7 +6771,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
@@ -6779,7 +6779,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
@@ -6787,7 +6787,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
@@ -6800,7 +6800,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
@@ -6808,7 +6808,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
@@ -6816,7 +6816,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
@@ -6824,7 +6824,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
@@ -6834,7 +6834,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
@@ -6842,7 +6842,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
@@ -6850,7 +6850,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
@@ -6858,7 +6858,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
@@ -6877,7 +6877,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
@@ -6885,7 +6885,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
@@ -6893,7 +6893,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -6901,7 +6901,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -6911,7 +6911,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
@@ -6919,7 +6919,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
@@ -6927,7 +6927,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -6935,7 +6935,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -6948,7 +6948,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
@@ -6956,7 +6956,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
@@ -6964,7 +6964,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -6972,7 +6972,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -6982,7 +6982,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
@@ -6990,7 +6990,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
@@ -6998,7 +6998,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -7006,7 +7006,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -7022,7 +7022,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
@@ -7030,7 +7030,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
@@ -7038,7 +7038,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
@@ -7046,7 +7046,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
@@ -7056,7 +7056,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
@@ -7064,7 +7064,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
@@ -7072,7 +7072,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
@@ -7080,7 +7080,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
@@ -7093,7 +7093,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
@@ -7101,7 +7101,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
@@ -7109,7 +7109,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
@@ -7117,7 +7117,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
@@ -7127,7 +7127,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
@@ -7135,7 +7135,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
@@ -7143,7 +7143,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
@@ -7151,7 +7151,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
@@ -7173,7 +7173,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
@@ -7181,7 +7181,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
@@ -7189,7 +7189,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -7197,7 +7197,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -7207,7 +7207,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
@@ -7215,7 +7215,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
@@ -7223,7 +7223,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -7231,7 +7231,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -7244,7 +7244,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
@@ -7252,7 +7252,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
@@ -7260,7 +7260,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -7268,7 +7268,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -7278,7 +7278,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
@@ -7286,7 +7286,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
@@ -7294,7 +7294,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -7302,7 +7302,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -7318,7 +7318,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
@@ -7326,7 +7326,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
@@ -7334,7 +7334,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
@@ -7342,7 +7342,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
@@ -7352,7 +7352,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
@@ -7360,7 +7360,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
@@ -7368,7 +7368,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
@@ -7376,7 +7376,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
@@ -7389,7 +7389,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
@@ -7397,7 +7397,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
@@ -7405,7 +7405,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
@@ -7413,7 +7413,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
@@ -7423,7 +7423,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
@@ -7431,7 +7431,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
@@ -7439,7 +7439,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
@@ -7447,7 +7447,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
@@ -7466,7 +7466,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
@@ -7474,7 +7474,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
@@ -7482,7 +7482,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -7490,7 +7490,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -7500,7 +7500,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
@@ -7508,7 +7508,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
@@ -7516,7 +7516,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -7524,7 +7524,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -7537,7 +7537,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
@@ -7545,7 +7545,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
@@ -7553,7 +7553,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -7561,7 +7561,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -7571,7 +7571,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
@@ -7579,7 +7579,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
@@ -7587,7 +7587,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -7595,7 +7595,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -7611,7 +7611,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
@@ -7619,7 +7619,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
@@ -7627,7 +7627,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
@@ -7635,7 +7635,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
@@ -7645,7 +7645,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
@@ -7653,7 +7653,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
@@ -7661,7 +7661,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
@@ -7669,7 +7669,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
@@ -7682,7 +7682,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
@@ -7690,7 +7690,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
@@ -7698,7 +7698,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
@@ -7706,7 +7706,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
@@ -7716,7 +7716,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
@@ -7724,7 +7724,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
@@ -7732,7 +7732,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
@@ -7740,7 +7740,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
@@ -7762,7 +7762,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -7770,7 +7770,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -7778,7 +7778,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -7786,7 +7786,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -7796,7 +7796,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -7804,7 +7804,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -7812,7 +7812,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -7820,7 +7820,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -7833,7 +7833,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -7841,7 +7841,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -7849,7 +7849,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -7857,7 +7857,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -7867,7 +7867,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -7875,7 +7875,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -7883,7 +7883,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -7891,7 +7891,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -7907,7 +7907,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -7915,7 +7915,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -7923,7 +7923,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -7931,7 +7931,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -7941,7 +7941,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -7949,7 +7949,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -7957,7 +7957,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -7965,7 +7965,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -7978,7 +7978,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -7986,7 +7986,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -7994,7 +7994,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8002,7 +8002,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8012,7 +8012,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8020,7 +8020,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -8028,7 +8028,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8036,7 +8036,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8055,7 +8055,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8063,7 +8063,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -8071,7 +8071,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8079,7 +8079,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8089,7 +8089,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8097,7 +8097,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -8105,7 +8105,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8113,7 +8113,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8126,7 +8126,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8134,7 +8134,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -8142,7 +8142,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8150,7 +8150,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8160,7 +8160,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8168,7 +8168,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -8176,7 +8176,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8184,7 +8184,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8200,7 +8200,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8208,7 +8208,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -8216,7 +8216,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8224,7 +8224,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8234,7 +8234,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8242,7 +8242,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -8250,7 +8250,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8258,7 +8258,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8271,7 +8271,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8279,7 +8279,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -8287,7 +8287,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8295,7 +8295,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -8305,7 +8305,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8313,7 +8313,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -8321,7 +8321,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8329,7 +8329,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -8351,7 +8351,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8359,7 +8359,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8367,7 +8367,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8375,7 +8375,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8385,7 +8385,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8393,7 +8393,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8401,7 +8401,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8409,7 +8409,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8422,7 +8422,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8430,7 +8430,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8438,7 +8438,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8446,7 +8446,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8456,7 +8456,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8464,7 +8464,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8472,7 +8472,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8480,7 +8480,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8496,7 +8496,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8504,7 +8504,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8512,7 +8512,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8520,7 +8520,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8530,7 +8530,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8538,7 +8538,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8546,7 +8546,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8554,7 +8554,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8567,7 +8567,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8575,7 +8575,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8583,7 +8583,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8591,7 +8591,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8601,7 +8601,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8609,7 +8609,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8617,7 +8617,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8625,7 +8625,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8644,7 +8644,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8652,7 +8652,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8660,7 +8660,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8668,7 +8668,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8678,7 +8678,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8686,7 +8686,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8694,7 +8694,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8702,7 +8702,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8715,7 +8715,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8723,7 +8723,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8731,7 +8731,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8739,7 +8739,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8749,7 +8749,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8757,7 +8757,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8765,7 +8765,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8773,7 +8773,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8789,7 +8789,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8797,7 +8797,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8805,7 +8805,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8813,7 +8813,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8823,7 +8823,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8831,7 +8831,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8839,7 +8839,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8847,7 +8847,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8860,7 +8860,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8868,7 +8868,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8876,7 +8876,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8884,7 +8884,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8894,7 +8894,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8902,7 +8902,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8910,7 +8910,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8918,7 +8918,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8935,7 +8935,7 @@ void test3()
 void test4()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -8957,7 +8957,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890");
                                     assert(ios.width() == 0);
@@ -8965,7 +8965,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890***************");
                                     assert(ios.width() == 0);
@@ -8973,7 +8973,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
@@ -8981,7 +8981,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
@@ -8991,7 +8991,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -8999,7 +8999,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0***********");
                                     assert(ios.width() == 0);
@@ -9007,7 +9007,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9015,7 +9015,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9028,7 +9028,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.");
                                     assert(ios.width() == 0);
@@ -9036,7 +9036,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.**************");
                                     assert(ios.width() == 0);
@@ -9044,7 +9044,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
@@ -9052,7 +9052,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
@@ -9062,7 +9062,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9070,7 +9070,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;**********");
                                     assert(ios.width() == 0);
@@ -9078,7 +9078,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9086,7 +9086,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9102,7 +9102,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890");
                                     assert(ios.width() == 0);
@@ -9110,7 +9110,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890**************");
                                     assert(ios.width() == 0);
@@ -9118,7 +9118,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************+1234567890");
                                     assert(ios.width() == 0);
@@ -9126,7 +9126,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**************1234567890");
                                     assert(ios.width() == 0);
@@ -9136,7 +9136,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9144,7 +9144,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0**********");
                                     assert(ios.width() == 0);
@@ -9152,7 +9152,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9160,7 +9160,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9173,7 +9173,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.");
                                     assert(ios.width() == 0);
@@ -9181,7 +9181,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.*************");
                                     assert(ios.width() == 0);
@@ -9189,7 +9189,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1234567890.");
                                     assert(ios.width() == 0);
@@ -9197,7 +9197,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1234567890.");
                                     assert(ios.width() == 0);
@@ -9207,7 +9207,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9215,7 +9215,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;*********");
                                     assert(ios.width() == 0);
@@ -9223,7 +9223,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********+1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9231,7 +9231,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9250,7 +9250,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890");
                                     assert(ios.width() == 0);
@@ -9258,7 +9258,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890***************");
                                     assert(ios.width() == 0);
@@ -9266,7 +9266,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
@@ -9274,7 +9274,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
@@ -9284,7 +9284,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9292,7 +9292,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0***********");
                                     assert(ios.width() == 0);
@@ -9300,7 +9300,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9308,7 +9308,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9321,7 +9321,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.");
                                     assert(ios.width() == 0);
@@ -9329,7 +9329,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.**************");
                                     assert(ios.width() == 0);
@@ -9337,7 +9337,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
@@ -9345,7 +9345,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
@@ -9355,7 +9355,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9363,7 +9363,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;**********");
                                     assert(ios.width() == 0);
@@ -9371,7 +9371,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9379,7 +9379,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9395,7 +9395,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890");
                                     assert(ios.width() == 0);
@@ -9403,7 +9403,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890**************");
                                     assert(ios.width() == 0);
@@ -9411,7 +9411,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************+1234567890");
                                     assert(ios.width() == 0);
@@ -9419,7 +9419,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**************1234567890");
                                     assert(ios.width() == 0);
@@ -9429,7 +9429,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9437,7 +9437,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0**********");
                                     assert(ios.width() == 0);
@@ -9445,7 +9445,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9453,7 +9453,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -9466,7 +9466,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.");
                                     assert(ios.width() == 0);
@@ -9474,7 +9474,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.*************");
                                     assert(ios.width() == 0);
@@ -9482,7 +9482,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1234567890.");
                                     assert(ios.width() == 0);
@@ -9490,7 +9490,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1234567890.");
                                     assert(ios.width() == 0);
@@ -9500,7 +9500,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9508,7 +9508,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;*********");
                                     assert(ios.width() == 0);
@@ -9516,7 +9516,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********+1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9524,7 +9524,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -9546,7 +9546,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
@@ -9554,7 +9554,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
@@ -9562,7 +9562,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -9570,7 +9570,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -9580,7 +9580,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9588,7 +9588,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
@@ -9596,7 +9596,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9604,7 +9604,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9617,7 +9617,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
@@ -9625,7 +9625,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
@@ -9633,7 +9633,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -9641,7 +9641,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -9651,7 +9651,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9659,7 +9659,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
@@ -9667,7 +9667,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9675,7 +9675,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9691,7 +9691,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
@@ -9699,7 +9699,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
@@ -9707,7 +9707,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
@@ -9715,7 +9715,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
@@ -9725,7 +9725,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9733,7 +9733,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
@@ -9741,7 +9741,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9749,7 +9749,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9762,7 +9762,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
@@ -9770,7 +9770,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
@@ -9778,7 +9778,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
@@ -9786,7 +9786,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
@@ -9796,7 +9796,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9804,7 +9804,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
@@ -9812,7 +9812,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9820,7 +9820,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9839,7 +9839,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
@@ -9847,7 +9847,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
@@ -9855,7 +9855,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -9863,7 +9863,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -9873,7 +9873,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9881,7 +9881,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
@@ -9889,7 +9889,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9897,7 +9897,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9910,7 +9910,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
@@ -9918,7 +9918,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
@@ -9926,7 +9926,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -9934,7 +9934,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -9944,7 +9944,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9952,7 +9952,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
@@ -9960,7 +9960,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9968,7 +9968,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -9984,7 +9984,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
@@ -9992,7 +9992,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
@@ -10000,7 +10000,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
@@ -10008,7 +10008,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
@@ -10018,7 +10018,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -10026,7 +10026,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
@@ -10034,7 +10034,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -10042,7 +10042,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -10055,7 +10055,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
@@ -10063,7 +10063,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
@@ -10071,7 +10071,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
@@ -10079,7 +10079,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
@@ -10089,7 +10089,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -10097,7 +10097,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
@@ -10105,7 +10105,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -10113,7 +10113,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -10135,7 +10135,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10143,7 +10143,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -10151,7 +10151,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10159,7 +10159,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10169,7 +10169,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10177,7 +10177,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -10185,7 +10185,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10193,7 +10193,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10206,7 +10206,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10214,7 +10214,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -10222,7 +10222,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10230,7 +10230,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10240,7 +10240,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10248,7 +10248,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -10256,7 +10256,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10264,7 +10264,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10280,7 +10280,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10288,7 +10288,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -10296,7 +10296,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10304,7 +10304,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10314,7 +10314,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10322,7 +10322,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -10330,7 +10330,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10338,7 +10338,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10351,7 +10351,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10359,7 +10359,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -10367,7 +10367,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10375,7 +10375,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10385,7 +10385,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10393,7 +10393,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -10401,7 +10401,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10409,7 +10409,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10428,7 +10428,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10436,7 +10436,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -10444,7 +10444,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10452,7 +10452,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10462,7 +10462,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10470,7 +10470,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -10478,7 +10478,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10486,7 +10486,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10499,7 +10499,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10507,7 +10507,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -10515,7 +10515,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10523,7 +10523,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10533,7 +10533,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10541,7 +10541,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -10549,7 +10549,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10557,7 +10557,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10573,7 +10573,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10581,7 +10581,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -10589,7 +10589,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10597,7 +10597,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10607,7 +10607,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10615,7 +10615,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -10623,7 +10623,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10631,7 +10631,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10644,7 +10644,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10652,7 +10652,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -10660,7 +10660,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10668,7 +10668,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -10678,7 +10678,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10686,7 +10686,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -10694,7 +10694,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10702,7 +10702,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -10723,7 +10723,7 @@ void test4()
 void test5()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -10745,7 +10745,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
@@ -10753,7 +10753,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
@@ -10761,7 +10761,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
@@ -10769,7 +10769,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
@@ -10779,7 +10779,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
@@ -10787,7 +10787,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
@@ -10795,7 +10795,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
@@ -10803,7 +10803,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
@@ -10816,7 +10816,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.e+00");
                                     assert(ios.width() == 0);
@@ -10824,7 +10824,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.e+00******************");
                                     assert(ios.width() == 0);
@@ -10832,7 +10832,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0.e+00");
                                     assert(ios.width() == 0);
@@ -10840,7 +10840,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0.e+00");
                                     assert(ios.width() == 0);
@@ -10850,7 +10850,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;e+00");
                                     assert(ios.width() == 0);
@@ -10858,7 +10858,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;e+00******************");
                                     assert(ios.width() == 0);
@@ -10866,7 +10866,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0;e+00");
                                     assert(ios.width() == 0);
@@ -10874,7 +10874,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0;e+00");
                                     assert(ios.width() == 0);
@@ -10890,7 +10890,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
@@ -10898,7 +10898,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
@@ -10906,7 +10906,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
@@ -10914,7 +10914,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
@@ -10924,7 +10924,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
@@ -10932,7 +10932,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
@@ -10940,7 +10940,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
@@ -10948,7 +10948,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
@@ -10961,7 +10961,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.e+00");
                                     assert(ios.width() == 0);
@@ -10969,7 +10969,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.e+00******************");
                                     assert(ios.width() == 0);
@@ -10977,7 +10977,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0.e+00");
                                     assert(ios.width() == 0);
@@ -10985,7 +10985,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0.e+00");
                                     assert(ios.width() == 0);
@@ -10995,7 +10995,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;e+00");
                                     assert(ios.width() == 0);
@@ -11003,7 +11003,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;e+00******************");
                                     assert(ios.width() == 0);
@@ -11011,7 +11011,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0;e+00");
                                     assert(ios.width() == 0);
@@ -11019,7 +11019,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0;e+00");
                                     assert(ios.width() == 0);
@@ -11038,7 +11038,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
@@ -11046,7 +11046,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
@@ -11054,7 +11054,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
@@ -11062,7 +11062,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
@@ -11072,7 +11072,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
@@ -11080,7 +11080,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
@@ -11088,7 +11088,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
@@ -11096,7 +11096,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
@@ -11109,7 +11109,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.E+00");
                                     assert(ios.width() == 0);
@@ -11117,7 +11117,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.E+00******************");
                                     assert(ios.width() == 0);
@@ -11125,7 +11125,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0.E+00");
                                     assert(ios.width() == 0);
@@ -11133,7 +11133,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0.E+00");
                                     assert(ios.width() == 0);
@@ -11143,7 +11143,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;E+00");
                                     assert(ios.width() == 0);
@@ -11151,7 +11151,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;E+00******************");
                                     assert(ios.width() == 0);
@@ -11159,7 +11159,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0;E+00");
                                     assert(ios.width() == 0);
@@ -11167,7 +11167,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0;E+00");
                                     assert(ios.width() == 0);
@@ -11183,7 +11183,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
@@ -11191,7 +11191,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
@@ -11199,7 +11199,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
@@ -11207,7 +11207,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
@@ -11217,7 +11217,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
@@ -11225,7 +11225,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
@@ -11233,7 +11233,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
@@ -11241,7 +11241,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
@@ -11254,7 +11254,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.E+00");
                                     assert(ios.width() == 0);
@@ -11262,7 +11262,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.E+00******************");
                                     assert(ios.width() == 0);
@@ -11270,7 +11270,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0.E+00");
                                     assert(ios.width() == 0);
@@ -11278,7 +11278,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0.E+00");
                                     assert(ios.width() == 0);
@@ -11288,7 +11288,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;E+00");
                                     assert(ios.width() == 0);
@@ -11296,7 +11296,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;E+00******************");
                                     assert(ios.width() == 0);
@@ -11304,7 +11304,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0;E+00");
                                     assert(ios.width() == 0);
@@ -11312,7 +11312,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0;E+00");
                                     assert(ios.width() == 0);
@@ -11334,7 +11334,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
@@ -11342,7 +11342,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
@@ -11350,7 +11350,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
@@ -11358,7 +11358,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
@@ -11368,7 +11368,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
@@ -11376,7 +11376,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
@@ -11384,7 +11384,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
@@ -11392,7 +11392,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
@@ -11405,7 +11405,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
@@ -11413,7 +11413,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
@@ -11421,7 +11421,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
@@ -11429,7 +11429,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
@@ -11439,7 +11439,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
@@ -11447,7 +11447,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
@@ -11455,7 +11455,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
@@ -11463,7 +11463,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
@@ -11479,7 +11479,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
@@ -11487,7 +11487,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
@@ -11495,7 +11495,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
@@ -11503,7 +11503,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
@@ -11513,7 +11513,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
@@ -11521,7 +11521,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
@@ -11529,7 +11529,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
@@ -11537,7 +11537,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
@@ -11550,7 +11550,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
@@ -11558,7 +11558,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
@@ -11566,7 +11566,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
@@ -11574,7 +11574,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
@@ -11584,7 +11584,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
@@ -11592,7 +11592,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
@@ -11600,7 +11600,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
@@ -11608,7 +11608,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
@@ -11627,7 +11627,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
@@ -11635,7 +11635,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
@@ -11643,7 +11643,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
@@ -11651,7 +11651,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
@@ -11661,7 +11661,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
@@ -11669,7 +11669,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
@@ -11677,7 +11677,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
@@ -11685,7 +11685,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
@@ -11698,7 +11698,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
@@ -11706,7 +11706,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
@@ -11714,7 +11714,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
@@ -11722,7 +11722,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
@@ -11732,7 +11732,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
@@ -11740,7 +11740,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
@@ -11748,7 +11748,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
@@ -11756,7 +11756,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
@@ -11772,7 +11772,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
@@ -11780,7 +11780,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
@@ -11788,7 +11788,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
@@ -11796,7 +11796,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
@@ -11806,7 +11806,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
@@ -11814,7 +11814,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
@@ -11822,7 +11822,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
@@ -11830,7 +11830,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
@@ -11843,7 +11843,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
@@ -11851,7 +11851,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
@@ -11859,7 +11859,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
@@ -11867,7 +11867,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
@@ -11877,7 +11877,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
@@ -11885,7 +11885,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
@@ -11893,7 +11893,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
@@ -11901,7 +11901,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
@@ -11923,7 +11923,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -11931,7 +11931,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
@@ -11939,7 +11939,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -11947,7 +11947,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
@@ -11957,7 +11957,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -11965,7 +11965,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
@@ -11973,7 +11973,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -11981,7 +11981,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
@@ -11994,7 +11994,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -12002,7 +12002,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
@@ -12010,7 +12010,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -12018,7 +12018,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
@@ -12028,7 +12028,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -12036,7 +12036,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
@@ -12044,7 +12044,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -12052,7 +12052,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
@@ -12068,7 +12068,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -12076,7 +12076,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
@@ -12084,7 +12084,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -12092,7 +12092,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
@@ -12102,7 +12102,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -12110,7 +12110,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
@@ -12118,7 +12118,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -12126,7 +12126,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
@@ -12139,7 +12139,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -12147,7 +12147,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
@@ -12155,7 +12155,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -12163,7 +12163,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
@@ -12173,7 +12173,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -12181,7 +12181,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
@@ -12189,7 +12189,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -12197,7 +12197,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
@@ -12216,7 +12216,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12224,7 +12224,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
@@ -12232,7 +12232,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12240,7 +12240,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12250,7 +12250,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12258,7 +12258,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
@@ -12266,7 +12266,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12274,7 +12274,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12287,7 +12287,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12295,7 +12295,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
@@ -12303,7 +12303,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12311,7 +12311,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12321,7 +12321,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12329,7 +12329,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
@@ -12337,7 +12337,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12345,7 +12345,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12361,7 +12361,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12369,7 +12369,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
@@ -12377,7 +12377,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12385,7 +12385,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12395,7 +12395,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12403,7 +12403,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
@@ -12411,7 +12411,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12419,7 +12419,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12432,7 +12432,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12440,7 +12440,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
@@ -12448,7 +12448,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12456,7 +12456,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
@@ -12466,7 +12466,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12474,7 +12474,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
@@ -12482,7 +12482,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12490,7 +12490,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
@@ -12513,7 +12513,7 @@ void test5()
 void test6()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -12535,7 +12535,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -12543,7 +12543,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -12551,7 +12551,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -12559,7 +12559,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -12569,7 +12569,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -12577,7 +12577,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -12585,7 +12585,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -12593,7 +12593,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -12606,7 +12606,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
@@ -12614,7 +12614,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
@@ -12622,7 +12622,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -12630,7 +12630,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -12640,7 +12640,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
@@ -12648,7 +12648,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
@@ -12656,7 +12656,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -12664,7 +12664,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -12680,7 +12680,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -12688,7 +12688,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -12696,7 +12696,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -12704,7 +12704,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -12714,7 +12714,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -12722,7 +12722,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -12730,7 +12730,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -12738,7 +12738,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -12751,7 +12751,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
@@ -12759,7 +12759,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
@@ -12767,7 +12767,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
@@ -12775,7 +12775,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
@@ -12785,7 +12785,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
@@ -12793,7 +12793,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
@@ -12801,7 +12801,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
@@ -12809,7 +12809,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
@@ -12828,7 +12828,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -12836,7 +12836,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -12844,7 +12844,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -12852,7 +12852,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -12862,7 +12862,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -12870,7 +12870,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -12878,7 +12878,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -12886,7 +12886,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -12899,7 +12899,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
@@ -12907,7 +12907,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
@@ -12915,7 +12915,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -12923,7 +12923,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -12933,7 +12933,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
@@ -12941,7 +12941,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
@@ -12949,7 +12949,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -12957,7 +12957,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -12973,7 +12973,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -12981,7 +12981,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -12989,7 +12989,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -12997,7 +12997,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -13007,7 +13007,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -13015,7 +13015,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -13023,7 +13023,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -13031,7 +13031,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -13044,7 +13044,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
@@ -13052,7 +13052,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
@@ -13060,7 +13060,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
@@ -13068,7 +13068,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
@@ -13078,7 +13078,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
@@ -13086,7 +13086,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
@@ -13094,7 +13094,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
@@ -13102,7 +13102,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
@@ -13124,7 +13124,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2e+09");
                                     assert(ios.width() == 0);
@@ -13132,7 +13132,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2e+09******************");
                                     assert(ios.width() == 0);
@@ -13140,7 +13140,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
@@ -13148,7 +13148,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
@@ -13158,7 +13158,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2e+09");
                                     assert(ios.width() == 0);
@@ -13166,7 +13166,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2e+09******************");
                                     assert(ios.width() == 0);
@@ -13174,7 +13174,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
@@ -13182,7 +13182,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
@@ -13195,7 +13195,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2e+09");
                                     assert(ios.width() == 0);
@@ -13203,7 +13203,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2e+09******************");
                                     assert(ios.width() == 0);
@@ -13211,7 +13211,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
@@ -13219,7 +13219,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
@@ -13229,7 +13229,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2e+09");
                                     assert(ios.width() == 0);
@@ -13237,7 +13237,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2e+09******************");
                                     assert(ios.width() == 0);
@@ -13245,7 +13245,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
@@ -13253,7 +13253,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
@@ -13269,7 +13269,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2e+09");
                                     assert(ios.width() == 0);
@@ -13277,7 +13277,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2e+09*****************");
                                     assert(ios.width() == 0);
@@ -13285,7 +13285,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1.2e+09");
                                     assert(ios.width() == 0);
@@ -13293,7 +13293,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1.2e+09");
                                     assert(ios.width() == 0);
@@ -13303,7 +13303,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2e+09");
                                     assert(ios.width() == 0);
@@ -13311,7 +13311,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2e+09*****************");
                                     assert(ios.width() == 0);
@@ -13319,7 +13319,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1;2e+09");
                                     assert(ios.width() == 0);
@@ -13327,7 +13327,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1;2e+09");
                                     assert(ios.width() == 0);
@@ -13340,7 +13340,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2e+09");
                                     assert(ios.width() == 0);
@@ -13348,7 +13348,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2e+09*****************");
                                     assert(ios.width() == 0);
@@ -13356,7 +13356,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1.2e+09");
                                     assert(ios.width() == 0);
@@ -13364,7 +13364,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1.2e+09");
                                     assert(ios.width() == 0);
@@ -13374,7 +13374,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2e+09");
                                     assert(ios.width() == 0);
@@ -13382,7 +13382,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2e+09*****************");
                                     assert(ios.width() == 0);
@@ -13390,7 +13390,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1;2e+09");
                                     assert(ios.width() == 0);
@@ -13398,7 +13398,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1;2e+09");
                                     assert(ios.width() == 0);
@@ -13417,7 +13417,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2E+09");
                                     assert(ios.width() == 0);
@@ -13425,7 +13425,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2E+09******************");
                                     assert(ios.width() == 0);
@@ -13433,7 +13433,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
@@ -13441,7 +13441,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
@@ -13451,7 +13451,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2E+09");
                                     assert(ios.width() == 0);
@@ -13459,7 +13459,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2E+09******************");
                                     assert(ios.width() == 0);
@@ -13467,7 +13467,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
@@ -13475,7 +13475,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
@@ -13488,7 +13488,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2E+09");
                                     assert(ios.width() == 0);
@@ -13496,7 +13496,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2E+09******************");
                                     assert(ios.width() == 0);
@@ -13504,7 +13504,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
@@ -13512,7 +13512,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
@@ -13522,7 +13522,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2E+09");
                                     assert(ios.width() == 0);
@@ -13530,7 +13530,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2E+09******************");
                                     assert(ios.width() == 0);
@@ -13538,7 +13538,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
@@ -13546,7 +13546,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
@@ -13562,7 +13562,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2E+09");
                                     assert(ios.width() == 0);
@@ -13570,7 +13570,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2E+09*****************");
                                     assert(ios.width() == 0);
@@ -13578,7 +13578,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1.2E+09");
                                     assert(ios.width() == 0);
@@ -13586,7 +13586,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1.2E+09");
                                     assert(ios.width() == 0);
@@ -13596,7 +13596,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2E+09");
                                     assert(ios.width() == 0);
@@ -13604,7 +13604,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2E+09*****************");
                                     assert(ios.width() == 0);
@@ -13612,7 +13612,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1;2E+09");
                                     assert(ios.width() == 0);
@@ -13620,7 +13620,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1;2E+09");
                                     assert(ios.width() == 0);
@@ -13633,7 +13633,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2E+09");
                                     assert(ios.width() == 0);
@@ -13641,7 +13641,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2E+09*****************");
                                     assert(ios.width() == 0);
@@ -13649,7 +13649,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1.2E+09");
                                     assert(ios.width() == 0);
@@ -13657,7 +13657,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1.2E+09");
                                     assert(ios.width() == 0);
@@ -13667,7 +13667,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2E+09");
                                     assert(ios.width() == 0);
@@ -13675,7 +13675,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2E+09*****************");
                                     assert(ios.width() == 0);
@@ -13683,7 +13683,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1;2E+09");
                                     assert(ios.width() == 0);
@@ -13691,7 +13691,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1;2E+09");
                                     assert(ios.width() == 0);
@@ -13719,7 +13719,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13727,7 +13727,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13735,7 +13735,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13743,7 +13743,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13753,7 +13753,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13761,7 +13761,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13769,7 +13769,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13777,7 +13777,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13790,7 +13790,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13798,7 +13798,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13806,7 +13806,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13814,7 +13814,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13824,7 +13824,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13832,7 +13832,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13840,7 +13840,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13848,7 +13848,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13864,7 +13864,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13872,7 +13872,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13880,7 +13880,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13888,7 +13888,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13898,7 +13898,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13906,7 +13906,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13914,7 +13914,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13922,7 +13922,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13935,7 +13935,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13943,7 +13943,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13951,7 +13951,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13959,7 +13959,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13969,7 +13969,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13977,7 +13977,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13985,7 +13985,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -13993,7 +13993,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -14012,7 +14012,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14020,7 +14020,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14028,7 +14028,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14036,7 +14036,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14046,7 +14046,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14054,7 +14054,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14062,7 +14062,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14070,7 +14070,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14083,7 +14083,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14091,7 +14091,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14099,7 +14099,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14107,7 +14107,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14117,7 +14117,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14125,7 +14125,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14133,7 +14133,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14141,7 +14141,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14157,7 +14157,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14165,7 +14165,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14173,7 +14173,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14181,7 +14181,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14191,7 +14191,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14199,7 +14199,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14207,7 +14207,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14215,7 +14215,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14228,7 +14228,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14236,7 +14236,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14244,7 +14244,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14252,7 +14252,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14262,7 +14262,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14270,7 +14270,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14278,7 +14278,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14286,7 +14286,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -14303,7 +14303,7 @@ void test6()
 void test7()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -14325,7 +14325,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14333,7 +14333,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -14341,7 +14341,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14349,7 +14349,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -14359,7 +14359,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14367,7 +14367,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -14375,7 +14375,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14383,7 +14383,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -14396,7 +14396,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -14404,7 +14404,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -14412,7 +14412,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -14420,7 +14420,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -14430,7 +14430,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -14438,7 +14438,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -14446,7 +14446,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -14454,7 +14454,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -14470,7 +14470,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14478,7 +14478,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -14486,7 +14486,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14494,7 +14494,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -14504,7 +14504,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14512,7 +14512,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -14520,7 +14520,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14528,7 +14528,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -14541,7 +14541,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -14549,7 +14549,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -14557,7 +14557,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -14565,7 +14565,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -14575,7 +14575,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -14583,7 +14583,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -14591,7 +14591,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -14599,7 +14599,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -14618,7 +14618,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -14626,7 +14626,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -14634,7 +14634,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -14642,7 +14642,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -14652,7 +14652,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -14660,7 +14660,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -14668,7 +14668,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -14676,7 +14676,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -14689,7 +14689,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -14697,7 +14697,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -14705,7 +14705,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -14713,7 +14713,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -14723,7 +14723,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -14731,7 +14731,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -14739,7 +14739,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -14747,7 +14747,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -14763,7 +14763,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -14771,7 +14771,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -14779,7 +14779,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -14787,7 +14787,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -14797,7 +14797,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -14805,7 +14805,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -14813,7 +14813,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -14821,7 +14821,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -14834,7 +14834,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -14842,7 +14842,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -14850,7 +14850,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -14858,7 +14858,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -14868,7 +14868,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -14876,7 +14876,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -14884,7 +14884,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -14892,7 +14892,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -14914,7 +14914,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14922,7 +14922,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -14930,7 +14930,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14938,7 +14938,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -14948,7 +14948,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14956,7 +14956,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -14964,7 +14964,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -14972,7 +14972,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -14985,7 +14985,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -14993,7 +14993,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -15001,7 +15001,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15009,7 +15009,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15019,7 +15019,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15027,7 +15027,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -15035,7 +15035,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15043,7 +15043,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15059,7 +15059,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15067,7 +15067,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -15075,7 +15075,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15083,7 +15083,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -15093,7 +15093,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15101,7 +15101,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -15109,7 +15109,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15117,7 +15117,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -15130,7 +15130,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15138,7 +15138,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -15146,7 +15146,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15154,7 +15154,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15164,7 +15164,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15172,7 +15172,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -15180,7 +15180,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15188,7 +15188,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15207,7 +15207,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15215,7 +15215,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -15223,7 +15223,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15231,7 +15231,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -15241,7 +15241,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15249,7 +15249,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -15257,7 +15257,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15265,7 +15265,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -15278,7 +15278,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -15286,7 +15286,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -15294,7 +15294,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -15302,7 +15302,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -15312,7 +15312,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -15320,7 +15320,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -15328,7 +15328,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -15336,7 +15336,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -15352,7 +15352,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15360,7 +15360,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -15368,7 +15368,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15376,7 +15376,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -15386,7 +15386,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15394,7 +15394,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -15402,7 +15402,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15410,7 +15410,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -15423,7 +15423,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -15431,7 +15431,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -15439,7 +15439,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -15447,7 +15447,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -15457,7 +15457,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -15465,7 +15465,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -15473,7 +15473,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -15481,7 +15481,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -15503,7 +15503,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15511,7 +15511,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -15519,7 +15519,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15527,7 +15527,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -15537,7 +15537,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15545,7 +15545,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -15553,7 +15553,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15561,7 +15561,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -15574,7 +15574,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15582,7 +15582,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -15590,7 +15590,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15598,7 +15598,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15608,7 +15608,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15616,7 +15616,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -15624,7 +15624,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15632,7 +15632,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15648,7 +15648,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15656,7 +15656,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -15664,7 +15664,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15672,7 +15672,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -15682,7 +15682,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15690,7 +15690,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -15698,7 +15698,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -15706,7 +15706,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -15719,7 +15719,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15727,7 +15727,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -15735,7 +15735,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15743,7 +15743,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -15753,7 +15753,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15761,7 +15761,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -15769,7 +15769,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15777,7 +15777,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -15796,7 +15796,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15804,7 +15804,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -15812,7 +15812,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15820,7 +15820,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -15830,7 +15830,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15838,7 +15838,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -15846,7 +15846,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15854,7 +15854,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -15867,7 +15867,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -15875,7 +15875,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -15883,7 +15883,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -15891,7 +15891,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -15901,7 +15901,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -15909,7 +15909,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -15917,7 +15917,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -15925,7 +15925,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -15941,7 +15941,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15949,7 +15949,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -15957,7 +15957,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15965,7 +15965,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -15975,7 +15975,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15983,7 +15983,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -15991,7 +15991,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -15999,7 +15999,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -16012,7 +16012,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -16020,7 +16020,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -16028,7 +16028,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -16036,7 +16036,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -16046,7 +16046,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -16054,7 +16054,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -16062,7 +16062,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -16070,7 +16070,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -16093,7 +16093,7 @@ void test7()
 void test8()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -16115,7 +16115,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16123,7 +16123,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -16131,7 +16131,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16139,7 +16139,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16149,7 +16149,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16157,7 +16157,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -16165,7 +16165,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16173,7 +16173,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16186,7 +16186,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16194,7 +16194,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -16202,7 +16202,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16210,7 +16210,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16220,7 +16220,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16228,7 +16228,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -16236,7 +16236,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16244,7 +16244,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16260,7 +16260,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16268,7 +16268,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -16276,7 +16276,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16284,7 +16284,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16294,7 +16294,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16302,7 +16302,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -16310,7 +16310,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16318,7 +16318,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16331,7 +16331,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16339,7 +16339,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -16347,7 +16347,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16355,7 +16355,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16365,7 +16365,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16373,7 +16373,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -16381,7 +16381,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16389,7 +16389,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16408,7 +16408,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16416,7 +16416,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -16424,7 +16424,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16432,7 +16432,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16442,7 +16442,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16450,7 +16450,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -16458,7 +16458,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16466,7 +16466,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16479,7 +16479,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16487,7 +16487,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -16495,7 +16495,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16503,7 +16503,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16513,7 +16513,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16521,7 +16521,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -16529,7 +16529,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16537,7 +16537,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16553,7 +16553,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16561,7 +16561,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -16569,7 +16569,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16577,7 +16577,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16587,7 +16587,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16595,7 +16595,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -16603,7 +16603,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16611,7 +16611,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16624,7 +16624,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16632,7 +16632,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -16640,7 +16640,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16648,7 +16648,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16658,7 +16658,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16666,7 +16666,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -16674,7 +16674,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16682,7 +16682,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -16704,7 +16704,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16712,7 +16712,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -16720,7 +16720,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16728,7 +16728,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16738,7 +16738,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16746,7 +16746,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -16754,7 +16754,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16762,7 +16762,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16775,7 +16775,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16783,7 +16783,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -16791,7 +16791,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16799,7 +16799,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16809,7 +16809,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16817,7 +16817,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -16825,7 +16825,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16833,7 +16833,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -16849,7 +16849,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16857,7 +16857,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -16865,7 +16865,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16873,7 +16873,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16883,7 +16883,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16891,7 +16891,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -16899,7 +16899,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16907,7 +16907,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16920,7 +16920,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16928,7 +16928,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -16936,7 +16936,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16944,7 +16944,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16954,7 +16954,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16962,7 +16962,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -16970,7 +16970,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16978,7 +16978,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -16997,7 +16997,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17005,7 +17005,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -17013,7 +17013,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17021,7 +17021,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17031,7 +17031,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17039,7 +17039,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -17047,7 +17047,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17055,7 +17055,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17068,7 +17068,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17076,7 +17076,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -17084,7 +17084,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17092,7 +17092,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17102,7 +17102,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17110,7 +17110,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -17118,7 +17118,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17126,7 +17126,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17142,7 +17142,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17150,7 +17150,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -17158,7 +17158,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17166,7 +17166,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17176,7 +17176,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17184,7 +17184,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -17192,7 +17192,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17200,7 +17200,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17213,7 +17213,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17221,7 +17221,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -17229,7 +17229,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17237,7 +17237,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17247,7 +17247,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17255,7 +17255,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -17263,7 +17263,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17271,7 +17271,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17299,7 +17299,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17307,7 +17307,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -17315,7 +17315,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17323,7 +17323,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17333,7 +17333,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17341,7 +17341,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -17349,7 +17349,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17357,7 +17357,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17370,7 +17370,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17378,7 +17378,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -17386,7 +17386,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17394,7 +17394,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17404,7 +17404,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17412,7 +17412,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
@@ -17420,7 +17420,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17428,7 +17428,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17444,7 +17444,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17452,7 +17452,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -17460,7 +17460,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17468,7 +17468,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17478,7 +17478,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17486,7 +17486,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -17494,7 +17494,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17502,7 +17502,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17515,7 +17515,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17523,7 +17523,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -17531,7 +17531,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17539,7 +17539,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17549,7 +17549,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17557,7 +17557,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
@@ -17565,7 +17565,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17573,7 +17573,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
@@ -17592,7 +17592,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17600,7 +17600,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -17608,7 +17608,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17616,7 +17616,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17626,7 +17626,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17634,7 +17634,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -17642,7 +17642,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17650,7 +17650,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17663,7 +17663,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17671,7 +17671,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -17679,7 +17679,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17687,7 +17687,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17697,7 +17697,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17705,7 +17705,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
@@ -17713,7 +17713,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17721,7 +17721,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -17737,7 +17737,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17745,7 +17745,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -17753,7 +17753,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17761,7 +17761,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17771,7 +17771,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17779,7 +17779,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -17787,7 +17787,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17795,7 +17795,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17808,7 +17808,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17816,7 +17816,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -17824,7 +17824,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17832,7 +17832,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17842,7 +17842,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17850,7 +17850,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
@@ -17858,7 +17858,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
@@ -17866,7 +17866,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long.pass.cpp
index f9034fbf8179a..6a3af01d52978 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long.pass.cpp
@@ -19,7 +19,7 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-typedef std::num_put<char, output_iterator<char*> > F;
+typedef std::num_put<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -47,7 +47,7 @@ int main(int, char**)
         std::ios ios(0);
         long v = 0;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0");
     }
@@ -55,7 +55,7 @@ int main(int, char**)
         std::ios ios(0);
         long v = 1;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1");
     }
@@ -63,7 +63,7 @@ int main(int, char**)
         std::ios ios(0);
         long v = -1;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1");
     }
@@ -71,7 +71,7 @@ int main(int, char**)
         std::ios ios(0);
         long v = -1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1000");
     }
@@ -79,7 +79,7 @@ int main(int, char**)
         std::ios ios(0);
         long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1000");
     }
@@ -88,7 +88,7 @@ int main(int, char**)
         showpos(ios);
         long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "+1000");
     }
@@ -97,7 +97,7 @@ int main(int, char**)
         oct(ios);
         long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1750");
     }
@@ -107,7 +107,7 @@ int main(int, char**)
         showbase(ios);
         long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "01750");
     }
@@ -116,7 +116,7 @@ int main(int, char**)
         hex(ios);
         long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "3e8");
     }
@@ -126,7 +126,7 @@ int main(int, char**)
         showbase(ios);
         long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x3e8");
     }
@@ -137,7 +137,7 @@ int main(int, char**)
         uppercase(ios);
         long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0X3E8");
     }
@@ -149,7 +149,7 @@ int main(int, char**)
         uppercase(ios);
         long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0X3E_8");
     }
@@ -160,7 +160,7 @@ int main(int, char**)
         showbase(ios);
         long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x7f_fff_ff_f");
     }
@@ -170,7 +170,7 @@ int main(int, char**)
         oct(ios);
         long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "123_46_7");
     }
@@ -181,7 +181,7 @@ int main(int, char**)
         showbase(ios);
         long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0_123_46_7");
     }
@@ -194,7 +194,7 @@ int main(int, char**)
         ios.width(15);
         long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "*****0_123_46_7");
     }
@@ -207,7 +207,7 @@ int main(int, char**)
         ios.width(15);
         long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0_123_46_7*****");
     }
@@ -220,7 +220,7 @@ int main(int, char**)
         ios.width(15);
         long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "*****0_123_46_7");
         assert(ios.width() == 0);
@@ -234,7 +234,7 @@ int main(int, char**)
         ios.width(15);
         long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "**0x7f_fff_ff_f");
     }
@@ -247,7 +247,7 @@ int main(int, char**)
         ios.width(15);
         long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x7f_fff_ff_f**");
     }
@@ -260,7 +260,7 @@ int main(int, char**)
         ios.width(15);
         long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x**7f_fff_ff_f");
         assert(ios.width() == 0);
@@ -273,7 +273,7 @@ int main(int, char**)
         right(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "***+1_00_0");
         assert(ios.width() == 0);
@@ -286,7 +286,7 @@ int main(int, char**)
         left(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "+1_00_0***");
         assert(ios.width() == 0);
@@ -299,7 +299,7 @@ int main(int, char**)
         internal(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "+***1_00_0");
         assert(ios.width() == 0);
@@ -312,7 +312,7 @@ int main(int, char**)
         showpos(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "***-1_00_0");
         assert(ios.width() == 0);
@@ -324,7 +324,7 @@ int main(int, char**)
         left(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1_00_0***");
         assert(ios.width() == 0);
@@ -336,7 +336,7 @@ int main(int, char**)
         internal(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-***1_00_0");
         assert(ios.width() == 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 e63f5762b1d80..3366e78751ede 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
@@ -26,7 +26,7 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-typedef std::num_put<char, output_iterator<char*> > F;
+typedef std::num_put<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -51,7 +51,7 @@ class my_numpunct
 void test1()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -72,7 +72,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -80,7 +80,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -88,7 +88,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -96,7 +96,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -106,7 +106,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -114,7 +114,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -122,7 +122,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -130,7 +130,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -143,7 +143,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -151,7 +151,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -159,7 +159,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -167,7 +167,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -177,7 +177,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -185,7 +185,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -193,7 +193,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -201,7 +201,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -217,7 +217,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -225,7 +225,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -233,7 +233,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -241,7 +241,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -251,7 +251,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -259,7 +259,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -267,7 +267,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -275,7 +275,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -288,7 +288,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -296,7 +296,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -304,7 +304,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -312,7 +312,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -322,7 +322,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -330,7 +330,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -338,7 +338,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -346,7 +346,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -365,7 +365,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -373,7 +373,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -381,7 +381,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -389,7 +389,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -399,7 +399,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -407,7 +407,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -415,7 +415,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -423,7 +423,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -436,7 +436,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -444,7 +444,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -452,7 +452,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -460,7 +460,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -470,7 +470,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -478,7 +478,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -486,7 +486,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -494,7 +494,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -510,7 +510,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -518,7 +518,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -526,7 +526,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -534,7 +534,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -544,7 +544,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -552,7 +552,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -560,7 +560,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -568,7 +568,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -581,7 +581,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -589,7 +589,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -597,7 +597,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -605,7 +605,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -615,7 +615,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -623,7 +623,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -631,7 +631,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -639,7 +639,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -661,7 +661,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -669,7 +669,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -677,7 +677,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -685,7 +685,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -695,7 +695,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -703,7 +703,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -711,7 +711,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -719,7 +719,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -732,7 +732,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -740,7 +740,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -748,7 +748,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -756,7 +756,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -766,7 +766,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -774,7 +774,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -782,7 +782,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -790,7 +790,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -806,7 +806,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -814,7 +814,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -822,7 +822,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -830,7 +830,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -840,7 +840,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -848,7 +848,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -856,7 +856,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -864,7 +864,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -877,7 +877,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -885,7 +885,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -893,7 +893,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -901,7 +901,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -911,7 +911,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -919,7 +919,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -927,7 +927,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -935,7 +935,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -954,7 +954,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -962,7 +962,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -970,7 +970,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -978,7 +978,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -988,7 +988,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -996,7 +996,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1004,7 +1004,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1012,7 +1012,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1025,7 +1025,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -1033,7 +1033,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -1041,7 +1041,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -1049,7 +1049,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -1059,7 +1059,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -1067,7 +1067,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -1075,7 +1075,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -1083,7 +1083,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -1099,7 +1099,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1107,7 +1107,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1115,7 +1115,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1123,7 +1123,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1133,7 +1133,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1141,7 +1141,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1149,7 +1149,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1157,7 +1157,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1170,7 +1170,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -1178,7 +1178,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -1186,7 +1186,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -1194,7 +1194,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -1204,7 +1204,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -1212,7 +1212,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -1220,7 +1220,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -1228,7 +1228,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -1250,7 +1250,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1258,7 +1258,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1266,7 +1266,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1274,7 +1274,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1284,7 +1284,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1292,7 +1292,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1300,7 +1300,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1308,7 +1308,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1321,7 +1321,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000");
                                     assert(ios.width() == 0);
@@ -1329,7 +1329,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000******************");
                                     assert(ios.width() == 0);
@@ -1337,7 +1337,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
@@ -1345,7 +1345,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
@@ -1355,7 +1355,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000");
                                     assert(ios.width() == 0);
@@ -1363,7 +1363,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000******************");
                                     assert(ios.width() == 0);
@@ -1371,7 +1371,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
@@ -1379,7 +1379,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
@@ -1395,7 +1395,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1403,7 +1403,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1411,7 +1411,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1419,7 +1419,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1429,7 +1429,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1437,7 +1437,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1445,7 +1445,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1453,7 +1453,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1466,7 +1466,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000");
                                     assert(ios.width() == 0);
@@ -1474,7 +1474,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000*****************");
                                     assert(ios.width() == 0);
@@ -1482,7 +1482,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+0.00000");
                                     assert(ios.width() == 0);
@@ -1490,7 +1490,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************0.00000");
                                     assert(ios.width() == 0);
@@ -1500,7 +1500,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000");
                                     assert(ios.width() == 0);
@@ -1508,7 +1508,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000*****************");
                                     assert(ios.width() == 0);
@@ -1516,7 +1516,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+0;00000");
                                     assert(ios.width() == 0);
@@ -1524,7 +1524,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************0;00000");
                                     assert(ios.width() == 0);
@@ -1543,7 +1543,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1551,7 +1551,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1559,7 +1559,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1567,7 +1567,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1577,7 +1577,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1585,7 +1585,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1593,7 +1593,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1601,7 +1601,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1614,7 +1614,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000");
                                     assert(ios.width() == 0);
@@ -1622,7 +1622,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000******************");
                                     assert(ios.width() == 0);
@@ -1630,7 +1630,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
@@ -1638,7 +1638,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
@@ -1648,7 +1648,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000");
                                     assert(ios.width() == 0);
@@ -1656,7 +1656,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000******************");
                                     assert(ios.width() == 0);
@@ -1664,7 +1664,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
@@ -1672,7 +1672,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
@@ -1688,7 +1688,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1696,7 +1696,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1704,7 +1704,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1712,7 +1712,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1722,7 +1722,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1730,7 +1730,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -1738,7 +1738,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -1746,7 +1746,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -1759,7 +1759,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000");
                                     assert(ios.width() == 0);
@@ -1767,7 +1767,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000*****************");
                                     assert(ios.width() == 0);
@@ -1775,7 +1775,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+0.00000");
                                     assert(ios.width() == 0);
@@ -1783,7 +1783,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************0.00000");
                                     assert(ios.width() == 0);
@@ -1793,7 +1793,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000");
                                     assert(ios.width() == 0);
@@ -1801,7 +1801,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000*****************");
                                     assert(ios.width() == 0);
@@ -1809,7 +1809,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+0;00000");
                                     assert(ios.width() == 0);
@@ -1817,7 +1817,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************0;00000");
                                     assert(ios.width() == 0);
@@ -1839,7 +1839,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1847,7 +1847,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1855,7 +1855,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1863,7 +1863,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1873,7 +1873,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -1881,7 +1881,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -1889,7 +1889,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1897,7 +1897,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -1910,7 +1910,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000");
                                     assert(ios.width() == 0);
@@ -1918,7 +1918,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000********");
                                     assert(ios.width() == 0);
@@ -1926,7 +1926,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
@@ -1934,7 +1934,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
@@ -1944,7 +1944,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000");
                                     assert(ios.width() == 0);
@@ -1952,7 +1952,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000********");
                                     assert(ios.width() == 0);
@@ -1960,7 +1960,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
@@ -1968,7 +1968,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
@@ -1984,7 +1984,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -1992,7 +1992,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2000,7 +2000,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2008,7 +2008,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2018,7 +2018,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2026,7 +2026,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2034,7 +2034,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2042,7 +2042,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2055,7 +2055,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2063,7 +2063,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000*******");
                                     assert(ios.width() == 0);
@@ -2071,7 +2071,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2079,7 +2079,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2089,7 +2089,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2097,7 +2097,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000*******");
                                     assert(ios.width() == 0);
@@ -2105,7 +2105,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2113,7 +2113,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2132,7 +2132,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2140,7 +2140,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2148,7 +2148,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2156,7 +2156,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2166,7 +2166,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2174,7 +2174,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2182,7 +2182,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2190,7 +2190,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2203,7 +2203,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2211,7 +2211,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000********");
                                     assert(ios.width() == 0);
@@ -2219,7 +2219,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2227,7 +2227,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2237,7 +2237,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2245,7 +2245,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000********");
                                     assert(ios.width() == 0);
@@ -2253,7 +2253,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2261,7 +2261,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2277,7 +2277,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2285,7 +2285,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2293,7 +2293,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2301,7 +2301,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2311,7 +2311,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2319,7 +2319,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2327,7 +2327,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2335,7 +2335,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2348,7 +2348,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2356,7 +2356,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000*******");
                                     assert(ios.width() == 0);
@@ -2364,7 +2364,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2372,7 +2372,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0.000000000000000");
                                     assert(ios.width() == 0);
@@ -2382,7 +2382,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2390,7 +2390,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000*******");
                                     assert(ios.width() == 0);
@@ -2398,7 +2398,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2406,7 +2406,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******0;000000000000000");
                                     assert(ios.width() == 0);
@@ -2428,7 +2428,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2436,7 +2436,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2444,7 +2444,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2452,7 +2452,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2462,7 +2462,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2470,7 +2470,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2478,7 +2478,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2486,7 +2486,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2499,7 +2499,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2507,7 +2507,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2515,7 +2515,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2523,7 +2523,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2533,7 +2533,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2541,7 +2541,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2549,7 +2549,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2557,7 +2557,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2573,7 +2573,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2581,7 +2581,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2589,7 +2589,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2597,7 +2597,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2607,7 +2607,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2615,7 +2615,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2623,7 +2623,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2631,7 +2631,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2644,7 +2644,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2652,7 +2652,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2660,7 +2660,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2668,7 +2668,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2678,7 +2678,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2686,7 +2686,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2694,7 +2694,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2702,7 +2702,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2721,7 +2721,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2729,7 +2729,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2737,7 +2737,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2745,7 +2745,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2755,7 +2755,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -2763,7 +2763,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -2771,7 +2771,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2779,7 +2779,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -2792,7 +2792,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2800,7 +2800,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2808,7 +2808,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2816,7 +2816,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2826,7 +2826,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2834,7 +2834,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2842,7 +2842,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2850,7 +2850,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2866,7 +2866,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2874,7 +2874,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2882,7 +2882,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2890,7 +2890,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2900,7 +2900,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -2908,7 +2908,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -2916,7 +2916,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -2924,7 +2924,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -2937,7 +2937,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2945,7 +2945,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2953,7 +2953,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2961,7 +2961,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2971,7 +2971,7 @@ void test1()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2979,7 +2979,7 @@ void test1()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2987,7 +2987,7 @@ void test1()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -2995,7 +2995,7 @@ void test1()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -3012,7 +3012,7 @@ void test1()
 void test2()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -3033,7 +3033,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3041,7 +3041,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3049,7 +3049,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3057,7 +3057,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3067,7 +3067,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3075,7 +3075,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3083,7 +3083,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3091,7 +3091,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3104,7 +3104,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -3112,7 +3112,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -3120,7 +3120,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -3128,7 +3128,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -3138,7 +3138,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -3146,7 +3146,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -3154,7 +3154,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -3162,7 +3162,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -3178,7 +3178,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3186,7 +3186,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3194,7 +3194,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3202,7 +3202,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3212,7 +3212,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3220,7 +3220,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3228,7 +3228,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3236,7 +3236,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3249,7 +3249,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -3257,7 +3257,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -3265,7 +3265,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -3273,7 +3273,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -3283,7 +3283,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -3291,7 +3291,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -3299,7 +3299,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -3307,7 +3307,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -3326,7 +3326,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3334,7 +3334,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3342,7 +3342,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3350,7 +3350,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3360,7 +3360,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3368,7 +3368,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3376,7 +3376,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3384,7 +3384,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3397,7 +3397,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -3405,7 +3405,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -3413,7 +3413,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -3421,7 +3421,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -3431,7 +3431,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -3439,7 +3439,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -3447,7 +3447,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -3455,7 +3455,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -3471,7 +3471,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3479,7 +3479,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3487,7 +3487,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3495,7 +3495,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3505,7 +3505,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3513,7 +3513,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3521,7 +3521,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3529,7 +3529,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3542,7 +3542,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -3550,7 +3550,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -3558,7 +3558,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -3566,7 +3566,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -3576,7 +3576,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -3584,7 +3584,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -3592,7 +3592,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -3600,7 +3600,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -3622,7 +3622,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3630,7 +3630,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3638,7 +3638,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3646,7 +3646,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3656,7 +3656,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3664,7 +3664,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3672,7 +3672,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3680,7 +3680,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3693,7 +3693,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -3701,7 +3701,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -3709,7 +3709,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -3717,7 +3717,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -3727,7 +3727,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -3735,7 +3735,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -3743,7 +3743,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -3751,7 +3751,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -3767,7 +3767,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3775,7 +3775,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3783,7 +3783,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3791,7 +3791,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3801,7 +3801,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3809,7 +3809,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3817,7 +3817,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3825,7 +3825,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3838,7 +3838,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -3846,7 +3846,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -3854,7 +3854,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -3862,7 +3862,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -3872,7 +3872,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -3880,7 +3880,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -3888,7 +3888,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -3896,7 +3896,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -3915,7 +3915,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3923,7 +3923,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3931,7 +3931,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3939,7 +3939,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3949,7 +3949,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -3957,7 +3957,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -3965,7 +3965,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -3973,7 +3973,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -3986,7 +3986,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -3994,7 +3994,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -4002,7 +4002,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -4010,7 +4010,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -4020,7 +4020,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -4028,7 +4028,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -4036,7 +4036,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -4044,7 +4044,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -4060,7 +4060,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4068,7 +4068,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4076,7 +4076,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4084,7 +4084,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4094,7 +4094,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4102,7 +4102,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4110,7 +4110,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4118,7 +4118,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4131,7 +4131,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -4139,7 +4139,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -4147,7 +4147,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -4155,7 +4155,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -4165,7 +4165,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -4173,7 +4173,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -4181,7 +4181,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -4189,7 +4189,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -4211,7 +4211,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4219,7 +4219,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4227,7 +4227,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4235,7 +4235,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4245,7 +4245,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4253,7 +4253,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4261,7 +4261,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4269,7 +4269,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4282,7 +4282,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000");
                                     assert(ios.width() == 0);
@@ -4290,7 +4290,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000*****************");
                                     assert(ios.width() == 0);
@@ -4298,7 +4298,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.00000");
                                     assert(ios.width() == 0);
@@ -4306,7 +4306,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.00000");
                                     assert(ios.width() == 0);
@@ -4316,7 +4316,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000");
                                     assert(ios.width() == 0);
@@ -4324,7 +4324,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000*****************");
                                     assert(ios.width() == 0);
@@ -4332,7 +4332,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;00000");
                                     assert(ios.width() == 0);
@@ -4340,7 +4340,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;00000");
                                     assert(ios.width() == 0);
@@ -4356,7 +4356,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4364,7 +4364,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4372,7 +4372,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4380,7 +4380,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4390,7 +4390,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4398,7 +4398,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4406,7 +4406,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4414,7 +4414,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4427,7 +4427,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000");
                                     assert(ios.width() == 0);
@@ -4435,7 +4435,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000*****************");
                                     assert(ios.width() == 0);
@@ -4443,7 +4443,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.00000");
                                     assert(ios.width() == 0);
@@ -4451,7 +4451,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.00000");
                                     assert(ios.width() == 0);
@@ -4461,7 +4461,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000");
                                     assert(ios.width() == 0);
@@ -4469,7 +4469,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000*****************");
                                     assert(ios.width() == 0);
@@ -4477,7 +4477,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;00000");
                                     assert(ios.width() == 0);
@@ -4485,7 +4485,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;00000");
                                     assert(ios.width() == 0);
@@ -4504,7 +4504,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4512,7 +4512,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4520,7 +4520,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4528,7 +4528,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4538,7 +4538,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4546,7 +4546,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4554,7 +4554,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4562,7 +4562,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4575,7 +4575,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000");
                                     assert(ios.width() == 0);
@@ -4583,7 +4583,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000*****************");
                                     assert(ios.width() == 0);
@@ -4591,7 +4591,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.00000");
                                     assert(ios.width() == 0);
@@ -4599,7 +4599,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.00000");
                                     assert(ios.width() == 0);
@@ -4609,7 +4609,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000");
                                     assert(ios.width() == 0);
@@ -4617,7 +4617,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000*****************");
                                     assert(ios.width() == 0);
@@ -4625,7 +4625,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;00000");
                                     assert(ios.width() == 0);
@@ -4633,7 +4633,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;00000");
                                     assert(ios.width() == 0);
@@ -4649,7 +4649,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4657,7 +4657,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4665,7 +4665,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4673,7 +4673,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4683,7 +4683,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4691,7 +4691,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4699,7 +4699,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4707,7 +4707,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4720,7 +4720,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000");
                                     assert(ios.width() == 0);
@@ -4728,7 +4728,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000*****************");
                                     assert(ios.width() == 0);
@@ -4736,7 +4736,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.00000");
                                     assert(ios.width() == 0);
@@ -4744,7 +4744,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.00000");
                                     assert(ios.width() == 0);
@@ -4754,7 +4754,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000");
                                     assert(ios.width() == 0);
@@ -4762,7 +4762,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000*****************");
                                     assert(ios.width() == 0);
@@ -4770,7 +4770,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;00000");
                                     assert(ios.width() == 0);
@@ -4778,7 +4778,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;00000");
                                     assert(ios.width() == 0);
@@ -4800,7 +4800,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4808,7 +4808,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4816,7 +4816,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4824,7 +4824,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4834,7 +4834,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4842,7 +4842,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4850,7 +4850,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4858,7 +4858,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4871,7 +4871,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000");
                                     assert(ios.width() == 0);
@@ -4879,7 +4879,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000*******");
                                     assert(ios.width() == 0);
@@ -4887,7 +4887,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******-0.000000000000000");
                                     assert(ios.width() == 0);
@@ -4895,7 +4895,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******0.000000000000000");
                                     assert(ios.width() == 0);
@@ -4905,7 +4905,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000");
                                     assert(ios.width() == 0);
@@ -4913,7 +4913,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000*******");
                                     assert(ios.width() == 0);
@@ -4921,7 +4921,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******-0;000000000000000");
                                     assert(ios.width() == 0);
@@ -4929,7 +4929,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******0;000000000000000");
                                     assert(ios.width() == 0);
@@ -4945,7 +4945,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4953,7 +4953,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4961,7 +4961,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -4969,7 +4969,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -4979,7 +4979,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -4987,7 +4987,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -4995,7 +4995,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5003,7 +5003,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5016,7 +5016,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000");
                                     assert(ios.width() == 0);
@@ -5024,7 +5024,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000*******");
                                     assert(ios.width() == 0);
@@ -5032,7 +5032,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******-0.000000000000000");
                                     assert(ios.width() == 0);
@@ -5040,7 +5040,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******0.000000000000000");
                                     assert(ios.width() == 0);
@@ -5050,7 +5050,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000");
                                     assert(ios.width() == 0);
@@ -5058,7 +5058,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000*******");
                                     assert(ios.width() == 0);
@@ -5066,7 +5066,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******-0;000000000000000");
                                     assert(ios.width() == 0);
@@ -5074,7 +5074,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******0;000000000000000");
                                     assert(ios.width() == 0);
@@ -5093,7 +5093,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5101,7 +5101,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5109,7 +5109,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5117,7 +5117,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5127,7 +5127,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5135,7 +5135,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5143,7 +5143,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5151,7 +5151,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5164,7 +5164,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000");
                                     assert(ios.width() == 0);
@@ -5172,7 +5172,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000*******");
                                     assert(ios.width() == 0);
@@ -5180,7 +5180,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******-0.000000000000000");
                                     assert(ios.width() == 0);
@@ -5188,7 +5188,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******0.000000000000000");
                                     assert(ios.width() == 0);
@@ -5198,7 +5198,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000");
                                     assert(ios.width() == 0);
@@ -5206,7 +5206,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000*******");
                                     assert(ios.width() == 0);
@@ -5214,7 +5214,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******-0;000000000000000");
                                     assert(ios.width() == 0);
@@ -5222,7 +5222,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******0;000000000000000");
                                     assert(ios.width() == 0);
@@ -5238,7 +5238,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5246,7 +5246,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5254,7 +5254,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5262,7 +5262,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5272,7 +5272,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5280,7 +5280,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5288,7 +5288,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5296,7 +5296,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5309,7 +5309,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000");
                                     assert(ios.width() == 0);
@@ -5317,7 +5317,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000*******");
                                     assert(ios.width() == 0);
@@ -5325,7 +5325,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******-0.000000000000000");
                                     assert(ios.width() == 0);
@@ -5333,7 +5333,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******0.000000000000000");
                                     assert(ios.width() == 0);
@@ -5343,7 +5343,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000");
                                     assert(ios.width() == 0);
@@ -5351,7 +5351,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000*******");
                                     assert(ios.width() == 0);
@@ -5359,7 +5359,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******-0;000000000000000");
                                     assert(ios.width() == 0);
@@ -5367,7 +5367,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******0;000000000000000");
                                     assert(ios.width() == 0);
@@ -5389,7 +5389,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5397,7 +5397,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5405,7 +5405,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5413,7 +5413,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5423,7 +5423,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5431,7 +5431,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5439,7 +5439,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5447,7 +5447,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5460,7 +5460,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5468,7 +5468,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5476,7 +5476,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5484,7 +5484,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5494,7 +5494,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5502,7 +5502,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5510,7 +5510,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5518,7 +5518,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5534,7 +5534,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5542,7 +5542,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5550,7 +5550,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5558,7 +5558,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5568,7 +5568,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5576,7 +5576,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5584,7 +5584,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5592,7 +5592,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5605,7 +5605,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5613,7 +5613,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5621,7 +5621,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5629,7 +5629,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5639,7 +5639,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5647,7 +5647,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5655,7 +5655,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5663,7 +5663,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5682,7 +5682,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5690,7 +5690,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5698,7 +5698,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5706,7 +5706,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5716,7 +5716,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5724,7 +5724,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5732,7 +5732,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5740,7 +5740,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5753,7 +5753,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5761,7 +5761,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5769,7 +5769,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5777,7 +5777,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5787,7 +5787,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5795,7 +5795,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5803,7 +5803,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5811,7 +5811,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5827,7 +5827,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5835,7 +5835,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5843,7 +5843,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5851,7 +5851,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5861,7 +5861,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -5869,7 +5869,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -5877,7 +5877,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -5885,7 +5885,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -5898,7 +5898,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5906,7 +5906,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5914,7 +5914,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5922,7 +5922,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5932,7 +5932,7 @@ void test2()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5940,7 +5940,7 @@ void test2()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5948,7 +5948,7 @@ void test2()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5956,7 +5956,7 @@ void test2()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -5973,7 +5973,7 @@ void test2()
 void test3()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -5994,7 +5994,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -6002,7 +6002,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -6010,7 +6010,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -6018,7 +6018,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -6028,7 +6028,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -6036,7 +6036,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -6044,7 +6044,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -6052,7 +6052,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -6065,7 +6065,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
@@ -6073,7 +6073,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
@@ -6081,7 +6081,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -6089,7 +6089,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -6099,7 +6099,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
@@ -6107,7 +6107,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
@@ -6115,7 +6115,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -6123,7 +6123,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -6139,7 +6139,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -6147,7 +6147,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -6155,7 +6155,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -6163,7 +6163,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -6173,7 +6173,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -6181,7 +6181,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -6189,7 +6189,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -6197,7 +6197,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -6210,7 +6210,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
@@ -6218,7 +6218,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
@@ -6226,7 +6226,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
@@ -6234,7 +6234,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
@@ -6244,7 +6244,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
@@ -6252,7 +6252,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
@@ -6260,7 +6260,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
@@ -6268,7 +6268,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
@@ -6287,7 +6287,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -6295,7 +6295,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -6303,7 +6303,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -6311,7 +6311,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -6321,7 +6321,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -6329,7 +6329,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -6337,7 +6337,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -6345,7 +6345,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -6358,7 +6358,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
@@ -6366,7 +6366,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
@@ -6374,7 +6374,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -6382,7 +6382,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -6392,7 +6392,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
@@ -6400,7 +6400,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
@@ -6408,7 +6408,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -6416,7 +6416,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -6432,7 +6432,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -6440,7 +6440,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -6448,7 +6448,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -6456,7 +6456,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -6466,7 +6466,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -6474,7 +6474,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -6482,7 +6482,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -6490,7 +6490,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -6503,7 +6503,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
@@ -6511,7 +6511,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
@@ -6519,7 +6519,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
@@ -6527,7 +6527,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
@@ -6537,7 +6537,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
@@ -6545,7 +6545,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
@@ -6553,7 +6553,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
@@ -6561,7 +6561,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
@@ -6583,7 +6583,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -6591,7 +6591,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -6599,7 +6599,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -6607,7 +6607,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -6617,7 +6617,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -6625,7 +6625,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -6633,7 +6633,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -6641,7 +6641,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -6654,7 +6654,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
@@ -6662,7 +6662,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
@@ -6670,7 +6670,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -6678,7 +6678,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -6688,7 +6688,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
@@ -6696,7 +6696,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
@@ -6704,7 +6704,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -6712,7 +6712,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -6728,7 +6728,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -6736,7 +6736,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -6744,7 +6744,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -6752,7 +6752,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -6762,7 +6762,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -6770,7 +6770,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -6778,7 +6778,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -6786,7 +6786,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -6799,7 +6799,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
@@ -6807,7 +6807,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
@@ -6815,7 +6815,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
@@ -6823,7 +6823,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
@@ -6833,7 +6833,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
@@ -6841,7 +6841,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
@@ -6849,7 +6849,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
@@ -6857,7 +6857,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
@@ -6876,7 +6876,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -6884,7 +6884,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -6892,7 +6892,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -6900,7 +6900,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -6910,7 +6910,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -6918,7 +6918,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -6926,7 +6926,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -6934,7 +6934,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -6947,7 +6947,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
@@ -6955,7 +6955,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
@@ -6963,7 +6963,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -6971,7 +6971,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -6981,7 +6981,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
@@ -6989,7 +6989,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
@@ -6997,7 +6997,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -7005,7 +7005,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -7021,7 +7021,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -7029,7 +7029,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -7037,7 +7037,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -7045,7 +7045,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -7055,7 +7055,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -7063,7 +7063,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -7071,7 +7071,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -7079,7 +7079,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -7092,7 +7092,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
@@ -7100,7 +7100,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
@@ -7108,7 +7108,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
@@ -7116,7 +7116,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
@@ -7126,7 +7126,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
@@ -7134,7 +7134,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
@@ -7142,7 +7142,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
@@ -7150,7 +7150,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
@@ -7172,7 +7172,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7180,7 +7180,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457e+09**************");
                                     assert(ios.width() == 0);
@@ -7188,7 +7188,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7196,7 +7196,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7206,7 +7206,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7214,7 +7214,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457e+09**************");
                                     assert(ios.width() == 0);
@@ -7222,7 +7222,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7230,7 +7230,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7243,7 +7243,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7251,7 +7251,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457e+09**************");
                                     assert(ios.width() == 0);
@@ -7259,7 +7259,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7267,7 +7267,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7277,7 +7277,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7285,7 +7285,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457e+09**************");
                                     assert(ios.width() == 0);
@@ -7293,7 +7293,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7301,7 +7301,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7317,7 +7317,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7325,7 +7325,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457e+09*************");
                                     assert(ios.width() == 0);
@@ -7333,7 +7333,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7341,7 +7341,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7351,7 +7351,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7359,7 +7359,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457e+09*************");
                                     assert(ios.width() == 0);
@@ -7367,7 +7367,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7375,7 +7375,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7388,7 +7388,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7396,7 +7396,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457e+09*************");
                                     assert(ios.width() == 0);
@@ -7404,7 +7404,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7412,7 +7412,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1.23457e+09");
                                     assert(ios.width() == 0);
@@ -7422,7 +7422,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7430,7 +7430,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457e+09*************");
                                     assert(ios.width() == 0);
@@ -7438,7 +7438,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7446,7 +7446,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1;23457e+09");
                                     assert(ios.width() == 0);
@@ -7465,7 +7465,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7473,7 +7473,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457E+09**************");
                                     assert(ios.width() == 0);
@@ -7481,7 +7481,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7489,7 +7489,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7499,7 +7499,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7507,7 +7507,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457E+09**************");
                                     assert(ios.width() == 0);
@@ -7515,7 +7515,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7523,7 +7523,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7536,7 +7536,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7544,7 +7544,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.23457E+09**************");
                                     assert(ios.width() == 0);
@@ -7552,7 +7552,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7560,7 +7560,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7570,7 +7570,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7578,7 +7578,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;23457E+09**************");
                                     assert(ios.width() == 0);
@@ -7586,7 +7586,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7594,7 +7594,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7610,7 +7610,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7618,7 +7618,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457E+09*************");
                                     assert(ios.width() == 0);
@@ -7626,7 +7626,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7634,7 +7634,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7644,7 +7644,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7652,7 +7652,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457E+09*************");
                                     assert(ios.width() == 0);
@@ -7660,7 +7660,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7668,7 +7668,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7681,7 +7681,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7689,7 +7689,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.23457E+09*************");
                                     assert(ios.width() == 0);
@@ -7697,7 +7697,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7705,7 +7705,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1.23457E+09");
                                     assert(ios.width() == 0);
@@ -7715,7 +7715,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7723,7 +7723,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;23457E+09*************");
                                     assert(ios.width() == 0);
@@ -7731,7 +7731,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7739,7 +7739,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1;23457E+09");
                                     assert(ios.width() == 0);
@@ -7761,7 +7761,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
@@ -7769,7 +7769,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
@@ -7777,7 +7777,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -7785,7 +7785,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -7795,7 +7795,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -7803,7 +7803,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
@@ -7811,7 +7811,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -7819,7 +7819,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -7832,7 +7832,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -7840,7 +7840,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -7848,7 +7848,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -7856,7 +7856,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -7866,7 +7866,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -7874,7 +7874,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -7882,7 +7882,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -7890,7 +7890,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -7906,7 +7906,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
@@ -7914,7 +7914,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
@@ -7922,7 +7922,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
@@ -7930,7 +7930,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
@@ -7940,7 +7940,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -7948,7 +7948,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
@@ -7956,7 +7956,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -7964,7 +7964,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -7977,7 +7977,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -7985,7 +7985,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -7993,7 +7993,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -8001,7 +8001,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -8011,7 +8011,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -8019,7 +8019,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -8027,7 +8027,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -8035,7 +8035,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -8054,7 +8054,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
@@ -8062,7 +8062,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
@@ -8070,7 +8070,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -8078,7 +8078,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -8088,7 +8088,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8096,7 +8096,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
@@ -8104,7 +8104,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8112,7 +8112,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8125,7 +8125,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -8133,7 +8133,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -8141,7 +8141,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -8149,7 +8149,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -8159,7 +8159,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -8167,7 +8167,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -8175,7 +8175,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -8183,7 +8183,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -8199,7 +8199,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
@@ -8207,7 +8207,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
@@ -8215,7 +8215,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
@@ -8223,7 +8223,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
@@ -8233,7 +8233,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8241,7 +8241,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
@@ -8249,7 +8249,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8257,7 +8257,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8270,7 +8270,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -8278,7 +8278,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -8286,7 +8286,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -8294,7 +8294,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -8304,7 +8304,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -8312,7 +8312,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -8320,7 +8320,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -8328,7 +8328,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -8350,7 +8350,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
@@ -8358,7 +8358,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
@@ -8366,7 +8366,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -8374,7 +8374,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -8384,7 +8384,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8392,7 +8392,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
@@ -8400,7 +8400,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8408,7 +8408,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8421,7 +8421,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8429,7 +8429,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8437,7 +8437,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8445,7 +8445,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8455,7 +8455,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8463,7 +8463,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8471,7 +8471,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8479,7 +8479,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8495,7 +8495,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
@@ -8503,7 +8503,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
@@ -8511,7 +8511,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
@@ -8519,7 +8519,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
@@ -8529,7 +8529,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8537,7 +8537,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
@@ -8545,7 +8545,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8553,7 +8553,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8566,7 +8566,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8574,7 +8574,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8582,7 +8582,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8590,7 +8590,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8600,7 +8600,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8608,7 +8608,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8616,7 +8616,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8624,7 +8624,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8643,7 +8643,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
@@ -8651,7 +8651,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
@@ -8659,7 +8659,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -8667,7 +8667,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
@@ -8677,7 +8677,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8685,7 +8685,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
@@ -8693,7 +8693,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8701,7 +8701,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8714,7 +8714,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8722,7 +8722,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8730,7 +8730,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8738,7 +8738,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8748,7 +8748,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8756,7 +8756,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8764,7 +8764,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8772,7 +8772,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8788,7 +8788,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
@@ -8796,7 +8796,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
@@ -8804,7 +8804,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
@@ -8812,7 +8812,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
@@ -8822,7 +8822,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8830,7 +8830,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
@@ -8838,7 +8838,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8846,7 +8846,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
@@ -8859,7 +8859,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8867,7 +8867,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8875,7 +8875,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8883,7 +8883,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8893,7 +8893,7 @@ void test3()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8901,7 +8901,7 @@ void test3()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8909,7 +8909,7 @@ void test3()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8917,7 +8917,7 @@ void test3()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -8934,7 +8934,7 @@ void test3()
 void test4()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -8955,7 +8955,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -8963,7 +8963,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -8971,7 +8971,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -8979,7 +8979,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -8989,7 +8989,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -8997,7 +8997,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9005,7 +9005,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9013,7 +9013,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9026,7 +9026,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9034,7 +9034,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9042,7 +9042,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9050,7 +9050,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9060,7 +9060,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9068,7 +9068,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9076,7 +9076,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9084,7 +9084,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9100,7 +9100,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9108,7 +9108,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9116,7 +9116,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9124,7 +9124,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9134,7 +9134,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9142,7 +9142,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9150,7 +9150,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9158,7 +9158,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9171,7 +9171,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9179,7 +9179,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9187,7 +9187,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9195,7 +9195,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9205,7 +9205,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9213,7 +9213,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9221,7 +9221,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9229,7 +9229,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9248,7 +9248,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9256,7 +9256,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9264,7 +9264,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9272,7 +9272,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9282,7 +9282,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9290,7 +9290,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9298,7 +9298,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9306,7 +9306,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9319,7 +9319,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9327,7 +9327,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9335,7 +9335,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9343,7 +9343,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9353,7 +9353,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9361,7 +9361,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9369,7 +9369,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9377,7 +9377,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9393,7 +9393,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9401,7 +9401,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9409,7 +9409,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9417,7 +9417,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9427,7 +9427,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9435,7 +9435,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9443,7 +9443,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9451,7 +9451,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9464,7 +9464,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9472,7 +9472,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9480,7 +9480,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9488,7 +9488,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9498,7 +9498,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9506,7 +9506,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9514,7 +9514,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9522,7 +9522,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9544,7 +9544,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9552,7 +9552,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9560,7 +9560,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9568,7 +9568,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9578,7 +9578,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9586,7 +9586,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9594,7 +9594,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9602,7 +9602,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9615,7 +9615,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9623,7 +9623,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9631,7 +9631,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9639,7 +9639,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9649,7 +9649,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9657,7 +9657,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9665,7 +9665,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9673,7 +9673,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9689,7 +9689,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9697,7 +9697,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9705,7 +9705,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9713,7 +9713,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9723,7 +9723,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9731,7 +9731,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9739,7 +9739,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9747,7 +9747,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9760,7 +9760,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9768,7 +9768,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9776,7 +9776,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9784,7 +9784,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9794,7 +9794,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -9802,7 +9802,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -9810,7 +9810,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -9818,7 +9818,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -9837,7 +9837,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9845,7 +9845,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9853,7 +9853,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9861,7 +9861,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9871,7 +9871,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9879,7 +9879,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9887,7 +9887,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9895,7 +9895,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9908,7 +9908,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9916,7 +9916,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9924,7 +9924,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9932,7 +9932,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9942,7 +9942,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9950,7 +9950,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9958,7 +9958,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -9966,7 +9966,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -9982,7 +9982,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -9990,7 +9990,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -9998,7 +9998,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10006,7 +10006,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10016,7 +10016,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10024,7 +10024,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10032,7 +10032,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10040,7 +10040,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10053,7 +10053,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10061,7 +10061,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10069,7 +10069,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10077,7 +10077,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10087,7 +10087,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10095,7 +10095,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10103,7 +10103,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10111,7 +10111,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10133,7 +10133,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -10141,7 +10141,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -10149,7 +10149,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -10157,7 +10157,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -10167,7 +10167,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -10175,7 +10175,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -10183,7 +10183,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -10191,7 +10191,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -10204,7 +10204,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -10212,7 +10212,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -10220,7 +10220,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -10228,7 +10228,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -10238,7 +10238,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -10246,7 +10246,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -10254,7 +10254,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -10262,7 +10262,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -10278,7 +10278,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -10286,7 +10286,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -10294,7 +10294,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -10302,7 +10302,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -10312,7 +10312,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -10320,7 +10320,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -10328,7 +10328,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -10336,7 +10336,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -10349,7 +10349,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -10357,7 +10357,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -10365,7 +10365,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -10373,7 +10373,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -10383,7 +10383,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
@@ -10391,7 +10391,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
@@ -10399,7 +10399,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
@@ -10407,7 +10407,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
@@ -10426,7 +10426,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10434,7 +10434,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10442,7 +10442,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10450,7 +10450,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10460,7 +10460,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10468,7 +10468,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10476,7 +10476,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10484,7 +10484,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10497,7 +10497,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10505,7 +10505,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10513,7 +10513,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10521,7 +10521,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10531,7 +10531,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10539,7 +10539,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10547,7 +10547,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10555,7 +10555,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10571,7 +10571,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10579,7 +10579,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10587,7 +10587,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10595,7 +10595,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10605,7 +10605,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10613,7 +10613,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10621,7 +10621,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10629,7 +10629,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10642,7 +10642,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10650,7 +10650,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10658,7 +10658,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10666,7 +10666,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10676,7 +10676,7 @@ void test4()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
@@ -10684,7 +10684,7 @@ void test4()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
@@ -10692,7 +10692,7 @@ void test4()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
@@ -10700,7 +10700,7 @@ void test4()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
@@ -10721,7 +10721,7 @@ void test4()
 void test5()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -10742,7 +10742,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
@@ -10750,7 +10750,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
@@ -10758,7 +10758,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10766,7 +10766,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10776,7 +10776,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
@@ -10784,7 +10784,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
@@ -10792,7 +10792,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10800,7 +10800,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10813,7 +10813,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
@@ -10821,7 +10821,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
@@ -10829,7 +10829,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10837,7 +10837,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10847,7 +10847,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
@@ -10855,7 +10855,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
@@ -10863,7 +10863,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10871,7 +10871,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10887,7 +10887,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
@@ -10895,7 +10895,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
@@ -10903,7 +10903,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10911,7 +10911,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10921,7 +10921,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
@@ -10929,7 +10929,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
@@ -10937,7 +10937,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10945,7 +10945,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10958,7 +10958,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
@@ -10966,7 +10966,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
@@ -10974,7 +10974,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10982,7 +10982,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -10992,7 +10992,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
@@ -11000,7 +11000,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
@@ -11008,7 +11008,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -11016,7 +11016,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
@@ -11035,7 +11035,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
@@ -11043,7 +11043,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
@@ -11051,7 +11051,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11059,7 +11059,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11069,7 +11069,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
@@ -11077,7 +11077,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
@@ -11085,7 +11085,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11093,7 +11093,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11106,7 +11106,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
@@ -11114,7 +11114,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
@@ -11122,7 +11122,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11130,7 +11130,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11140,7 +11140,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
@@ -11148,7 +11148,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
@@ -11156,7 +11156,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11164,7 +11164,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11180,7 +11180,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
@@ -11188,7 +11188,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
@@ -11196,7 +11196,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11204,7 +11204,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11214,7 +11214,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
@@ -11222,7 +11222,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
@@ -11230,7 +11230,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11238,7 +11238,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11251,7 +11251,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
@@ -11259,7 +11259,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
@@ -11267,7 +11267,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11275,7 +11275,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11285,7 +11285,7 @@ void test5()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
@@ -11293,7 +11293,7 @@ void test5()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
@@ -11301,7 +11301,7 @@ void test5()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11309,7 +11309,7 @@ void test5()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
@@ -11334,7 +11334,7 @@ void test5()
 void test6()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -11356,7 +11356,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -11364,7 +11364,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -11372,7 +11372,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -11380,7 +11380,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -11390,7 +11390,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -11398,7 +11398,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -11406,7 +11406,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -11414,7 +11414,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -11427,7 +11427,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -11435,7 +11435,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -11443,7 +11443,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -11451,7 +11451,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -11461,7 +11461,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -11469,7 +11469,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -11477,7 +11477,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -11485,7 +11485,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -11501,7 +11501,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -11509,7 +11509,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -11517,7 +11517,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -11525,7 +11525,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -11535,7 +11535,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -11543,7 +11543,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -11551,7 +11551,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -11559,7 +11559,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -11572,7 +11572,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -11580,7 +11580,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -11588,7 +11588,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -11596,7 +11596,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -11606,7 +11606,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -11614,7 +11614,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -11622,7 +11622,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -11630,7 +11630,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -11649,7 +11649,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -11657,7 +11657,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -11665,7 +11665,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -11673,7 +11673,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -11683,7 +11683,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
@@ -11691,7 +11691,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
@@ -11699,7 +11699,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -11707,7 +11707,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
@@ -11720,7 +11720,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
@@ -11728,7 +11728,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
@@ -11736,7 +11736,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -11744,7 +11744,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
@@ -11754,7 +11754,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
@@ -11762,7 +11762,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
@@ -11770,7 +11770,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -11778,7 +11778,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
@@ -11794,7 +11794,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -11802,7 +11802,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -11810,7 +11810,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -11818,7 +11818,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -11828,7 +11828,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
@@ -11836,7 +11836,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
@@ -11844,7 +11844,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
@@ -11852,7 +11852,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
@@ -11865,7 +11865,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
@@ -11873,7 +11873,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
@@ -11881,7 +11881,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
@@ -11889,7 +11889,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
@@ -11899,7 +11899,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
@@ -11907,7 +11907,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
@@ -11915,7 +11915,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
@@ -11923,7 +11923,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
@@ -11945,7 +11945,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
@@ -11953,7 +11953,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
@@ -11961,7 +11961,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -11969,7 +11969,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -11979,7 +11979,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
@@ -11987,7 +11987,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
@@ -11995,7 +11995,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -12003,7 +12003,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -12016,7 +12016,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
@@ -12024,7 +12024,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
@@ -12032,7 +12032,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -12040,7 +12040,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -12050,7 +12050,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
@@ -12058,7 +12058,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
@@ -12066,7 +12066,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -12074,7 +12074,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -12090,7 +12090,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
@@ -12098,7 +12098,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
@@ -12106,7 +12106,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
@@ -12114,7 +12114,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
@@ -12124,7 +12124,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
@@ -12132,7 +12132,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
@@ -12140,7 +12140,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
@@ -12148,7 +12148,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
@@ -12161,7 +12161,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
@@ -12169,7 +12169,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
@@ -12177,7 +12177,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
@@ -12185,7 +12185,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
@@ -12195,7 +12195,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
@@ -12203,7 +12203,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
@@ -12211,7 +12211,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
@@ -12219,7 +12219,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
@@ -12238,7 +12238,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
@@ -12246,7 +12246,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
@@ -12254,7 +12254,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -12262,7 +12262,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -12272,7 +12272,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
@@ -12280,7 +12280,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
@@ -12288,7 +12288,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -12296,7 +12296,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -12309,7 +12309,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
@@ -12317,7 +12317,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
@@ -12325,7 +12325,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -12333,7 +12333,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
@@ -12343,7 +12343,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
@@ -12351,7 +12351,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
@@ -12359,7 +12359,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -12367,7 +12367,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
@@ -12383,7 +12383,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
@@ -12391,7 +12391,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
@@ -12399,7 +12399,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
@@ -12407,7 +12407,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
@@ -12417,7 +12417,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
@@ -12425,7 +12425,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
@@ -12433,7 +12433,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
@@ -12441,7 +12441,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
@@ -12454,7 +12454,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
@@ -12462,7 +12462,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
@@ -12470,7 +12470,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
@@ -12478,7 +12478,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
@@ -12488,7 +12488,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
@@ -12496,7 +12496,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
@@ -12504,7 +12504,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
@@ -12512,7 +12512,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
@@ -12534,7 +12534,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
@@ -12542,7 +12542,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
@@ -12550,7 +12550,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -12558,7 +12558,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -12568,7 +12568,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
@@ -12576,7 +12576,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
@@ -12584,7 +12584,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -12592,7 +12592,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -12605,7 +12605,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
@@ -12613,7 +12613,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
@@ -12621,7 +12621,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -12629,7 +12629,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -12639,7 +12639,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
@@ -12647,7 +12647,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
@@ -12655,7 +12655,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -12663,7 +12663,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -12679,7 +12679,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
@@ -12687,7 +12687,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
@@ -12695,7 +12695,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
@@ -12703,7 +12703,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
@@ -12713,7 +12713,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
@@ -12721,7 +12721,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
@@ -12729,7 +12729,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
@@ -12737,7 +12737,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
@@ -12750,7 +12750,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
@@ -12758,7 +12758,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
@@ -12766,7 +12766,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
@@ -12774,7 +12774,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
@@ -12784,7 +12784,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
@@ -12792,7 +12792,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
@@ -12800,7 +12800,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
@@ -12808,7 +12808,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
@@ -12827,7 +12827,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
@@ -12835,7 +12835,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
@@ -12843,7 +12843,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -12851,7 +12851,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -12861,7 +12861,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
@@ -12869,7 +12869,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
@@ -12877,7 +12877,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -12885,7 +12885,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -12898,7 +12898,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
@@ -12906,7 +12906,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
@@ -12914,7 +12914,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -12922,7 +12922,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
@@ -12932,7 +12932,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
@@ -12940,7 +12940,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
@@ -12948,7 +12948,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -12956,7 +12956,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
@@ -12972,7 +12972,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
@@ -12980,7 +12980,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
@@ -12988,7 +12988,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
@@ -12996,7 +12996,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
@@ -13006,7 +13006,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
@@ -13014,7 +13014,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
@@ -13022,7 +13022,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
@@ -13030,7 +13030,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
@@ -13043,7 +13043,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
@@ -13051,7 +13051,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
@@ -13059,7 +13059,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
@@ -13067,7 +13067,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
@@ -13077,7 +13077,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
@@ -13085,7 +13085,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
@@ -13093,7 +13093,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
@@ -13101,7 +13101,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
@@ -13123,7 +13123,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13131,7 +13131,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -13139,7 +13139,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13147,7 +13147,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13157,7 +13157,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13165,7 +13165,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -13173,7 +13173,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13181,7 +13181,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13194,7 +13194,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13202,7 +13202,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -13210,7 +13210,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13218,7 +13218,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13228,7 +13228,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13236,7 +13236,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -13244,7 +13244,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13252,7 +13252,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13268,7 +13268,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13276,7 +13276,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -13284,7 +13284,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13292,7 +13292,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13302,7 +13302,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13310,7 +13310,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -13318,7 +13318,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13326,7 +13326,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13339,7 +13339,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13347,7 +13347,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -13355,7 +13355,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13363,7 +13363,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13373,7 +13373,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13381,7 +13381,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -13389,7 +13389,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13397,7 +13397,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13416,7 +13416,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13424,7 +13424,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -13432,7 +13432,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13440,7 +13440,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13450,7 +13450,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13458,7 +13458,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -13466,7 +13466,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13474,7 +13474,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13487,7 +13487,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13495,7 +13495,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -13503,7 +13503,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13511,7 +13511,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13521,7 +13521,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13529,7 +13529,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
@@ -13537,7 +13537,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13545,7 +13545,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13561,7 +13561,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13569,7 +13569,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -13577,7 +13577,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13585,7 +13585,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13595,7 +13595,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13603,7 +13603,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -13611,7 +13611,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13619,7 +13619,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13632,7 +13632,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13640,7 +13640,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -13648,7 +13648,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13656,7 +13656,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -13666,7 +13666,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13674,7 +13674,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -13682,7 +13682,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13690,7 +13690,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -13712,7 +13712,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13720,7 +13720,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13728,7 +13728,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13736,7 +13736,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13746,7 +13746,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13754,7 +13754,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13762,7 +13762,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13770,7 +13770,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13783,7 +13783,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13791,7 +13791,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13799,7 +13799,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13807,7 +13807,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13817,7 +13817,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13825,7 +13825,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13833,7 +13833,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13841,7 +13841,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13857,7 +13857,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13865,7 +13865,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13873,7 +13873,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13881,7 +13881,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13891,7 +13891,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13899,7 +13899,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13907,7 +13907,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13915,7 +13915,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13928,7 +13928,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13936,7 +13936,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13944,7 +13944,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13952,7 +13952,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13962,7 +13962,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13970,7 +13970,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13978,7 +13978,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -13986,7 +13986,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14005,7 +14005,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14013,7 +14013,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14021,7 +14021,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14029,7 +14029,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14039,7 +14039,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14047,7 +14047,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14055,7 +14055,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14063,7 +14063,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14076,7 +14076,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14084,7 +14084,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14092,7 +14092,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14100,7 +14100,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14110,7 +14110,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14118,7 +14118,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14126,7 +14126,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14134,7 +14134,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14150,7 +14150,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14158,7 +14158,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14166,7 +14166,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14174,7 +14174,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14184,7 +14184,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14192,7 +14192,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14200,7 +14200,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14208,7 +14208,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14221,7 +14221,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14229,7 +14229,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14237,7 +14237,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14245,7 +14245,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14255,7 +14255,7 @@ void test6()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14263,7 +14263,7 @@ void test6()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14271,7 +14271,7 @@ void test6()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14279,7 +14279,7 @@ void test6()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -14296,7 +14296,7 @@ void test6()
 void test7()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -14318,7 +14318,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -14326,7 +14326,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -14334,7 +14334,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -14342,7 +14342,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -14352,7 +14352,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -14360,7 +14360,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -14368,7 +14368,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -14376,7 +14376,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -14389,7 +14389,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -14397,7 +14397,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -14405,7 +14405,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -14413,7 +14413,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -14423,7 +14423,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -14431,7 +14431,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -14439,7 +14439,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -14447,7 +14447,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -14463,7 +14463,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -14471,7 +14471,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -14479,7 +14479,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -14487,7 +14487,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -14497,7 +14497,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -14505,7 +14505,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -14513,7 +14513,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -14521,7 +14521,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -14534,7 +14534,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -14542,7 +14542,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -14550,7 +14550,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -14558,7 +14558,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -14568,7 +14568,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -14576,7 +14576,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -14584,7 +14584,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -14592,7 +14592,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -14611,7 +14611,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -14619,7 +14619,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -14627,7 +14627,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -14635,7 +14635,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -14645,7 +14645,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -14653,7 +14653,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -14661,7 +14661,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -14669,7 +14669,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -14682,7 +14682,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -14690,7 +14690,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -14698,7 +14698,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -14706,7 +14706,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -14716,7 +14716,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -14724,7 +14724,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -14732,7 +14732,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -14740,7 +14740,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -14756,7 +14756,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -14764,7 +14764,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -14772,7 +14772,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -14780,7 +14780,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -14790,7 +14790,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
@@ -14798,7 +14798,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
@@ -14806,7 +14806,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
@@ -14814,7 +14814,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
@@ -14827,7 +14827,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
@@ -14835,7 +14835,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
@@ -14843,7 +14843,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
@@ -14851,7 +14851,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
@@ -14861,7 +14861,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
@@ -14869,7 +14869,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
@@ -14877,7 +14877,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
@@ -14885,7 +14885,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
@@ -14907,7 +14907,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
@@ -14915,7 +14915,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
@@ -14923,7 +14923,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
@@ -14931,7 +14931,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
@@ -14941,7 +14941,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
@@ -14949,7 +14949,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
@@ -14957,7 +14957,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
@@ -14965,7 +14965,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
@@ -14978,7 +14978,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
@@ -14986,7 +14986,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
@@ -14994,7 +14994,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
@@ -15002,7 +15002,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
@@ -15012,7 +15012,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
@@ -15020,7 +15020,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
@@ -15028,7 +15028,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
@@ -15036,7 +15036,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
@@ -15052,7 +15052,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
@@ -15060,7 +15060,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
@@ -15068,7 +15068,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
@@ -15076,7 +15076,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
@@ -15086,7 +15086,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
@@ -15094,7 +15094,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
@@ -15102,7 +15102,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
@@ -15110,7 +15110,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
@@ -15123,7 +15123,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
@@ -15131,7 +15131,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
@@ -15139,7 +15139,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
@@ -15147,7 +15147,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
@@ -15157,7 +15157,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
@@ -15165,7 +15165,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
@@ -15173,7 +15173,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
@@ -15181,7 +15181,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
@@ -15200,7 +15200,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
@@ -15208,7 +15208,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
@@ -15216,7 +15216,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
@@ -15224,7 +15224,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
@@ -15234,7 +15234,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
@@ -15242,7 +15242,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
@@ -15250,7 +15250,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
@@ -15258,7 +15258,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
@@ -15271,7 +15271,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
@@ -15279,7 +15279,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
@@ -15287,7 +15287,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
@@ -15295,7 +15295,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
@@ -15305,7 +15305,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
@@ -15313,7 +15313,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
@@ -15321,7 +15321,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
@@ -15329,7 +15329,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
@@ -15345,7 +15345,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
@@ -15353,7 +15353,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
@@ -15361,7 +15361,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
@@ -15369,7 +15369,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
@@ -15379,7 +15379,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
@@ -15387,7 +15387,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
@@ -15395,7 +15395,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
@@ -15403,7 +15403,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
@@ -15416,7 +15416,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
@@ -15424,7 +15424,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
@@ -15432,7 +15432,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
@@ -15440,7 +15440,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
@@ -15450,7 +15450,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
@@ -15458,7 +15458,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
@@ -15466,7 +15466,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
@@ -15474,7 +15474,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
@@ -15496,7 +15496,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
@@ -15504,7 +15504,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
@@ -15512,7 +15512,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
@@ -15520,7 +15520,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
@@ -15530,7 +15530,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
@@ -15538,7 +15538,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
@@ -15546,7 +15546,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
@@ -15554,7 +15554,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
@@ -15567,7 +15567,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
@@ -15575,7 +15575,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
@@ -15583,7 +15583,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
@@ -15591,7 +15591,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
@@ -15601,7 +15601,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
@@ -15609,7 +15609,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
@@ -15617,7 +15617,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
@@ -15625,7 +15625,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
@@ -15641,7 +15641,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
@@ -15649,7 +15649,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
@@ -15657,7 +15657,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
@@ -15665,7 +15665,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
@@ -15675,7 +15675,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
@@ -15683,7 +15683,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
@@ -15691,7 +15691,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
@@ -15699,7 +15699,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
@@ -15712,7 +15712,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
@@ -15720,7 +15720,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
@@ -15728,7 +15728,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
@@ -15736,7 +15736,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
@@ -15746,7 +15746,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
@@ -15754,7 +15754,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
@@ -15762,7 +15762,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
@@ -15770,7 +15770,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
@@ -15789,7 +15789,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
@@ -15797,7 +15797,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
@@ -15805,7 +15805,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
@@ -15813,7 +15813,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
@@ -15823,7 +15823,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
@@ -15831,7 +15831,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
@@ -15839,7 +15839,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
@@ -15847,7 +15847,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
@@ -15860,7 +15860,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
@@ -15868,7 +15868,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
@@ -15876,7 +15876,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
@@ -15884,7 +15884,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
@@ -15894,7 +15894,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
@@ -15902,7 +15902,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
@@ -15910,7 +15910,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
@@ -15918,7 +15918,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
@@ -15934,7 +15934,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
@@ -15942,7 +15942,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
@@ -15950,7 +15950,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
@@ -15958,7 +15958,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
@@ -15968,7 +15968,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
@@ -15976,7 +15976,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
@@ -15984,7 +15984,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
@@ -15992,7 +15992,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
@@ -16005,7 +16005,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
@@ -16013,7 +16013,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
@@ -16021,7 +16021,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
@@ -16029,7 +16029,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
@@ -16039,7 +16039,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
@@ -16047,7 +16047,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
@@ -16055,7 +16055,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
@@ -16063,7 +16063,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
@@ -16085,7 +16085,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16093,7 +16093,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16101,7 +16101,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16109,7 +16109,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16119,7 +16119,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16127,7 +16127,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16135,7 +16135,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16143,7 +16143,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16156,7 +16156,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16164,7 +16164,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16172,7 +16172,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16180,7 +16180,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16190,7 +16190,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16198,7 +16198,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16206,7 +16206,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16214,7 +16214,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16230,7 +16230,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16238,7 +16238,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16246,7 +16246,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16254,7 +16254,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16264,7 +16264,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16272,7 +16272,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16280,7 +16280,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16288,7 +16288,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16301,7 +16301,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16309,7 +16309,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16317,7 +16317,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16325,7 +16325,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16335,7 +16335,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16343,7 +16343,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16351,7 +16351,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16359,7 +16359,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16378,7 +16378,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16386,7 +16386,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16394,7 +16394,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16402,7 +16402,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16412,7 +16412,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16420,7 +16420,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16428,7 +16428,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16436,7 +16436,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16449,7 +16449,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16457,7 +16457,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16465,7 +16465,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16473,7 +16473,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16483,7 +16483,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16491,7 +16491,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16499,7 +16499,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16507,7 +16507,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16523,7 +16523,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16531,7 +16531,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16539,7 +16539,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16547,7 +16547,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16557,7 +16557,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16565,7 +16565,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16573,7 +16573,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16581,7 +16581,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16594,7 +16594,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16602,7 +16602,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16610,7 +16610,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16618,7 +16618,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
@@ -16628,7 +16628,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16636,7 +16636,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
@@ -16644,7 +16644,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16652,7 +16652,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
@@ -16674,7 +16674,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16682,7 +16682,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16690,7 +16690,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16698,7 +16698,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16708,7 +16708,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16716,7 +16716,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16724,7 +16724,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16732,7 +16732,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16745,7 +16745,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16753,7 +16753,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16761,7 +16761,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16769,7 +16769,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16779,7 +16779,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16787,7 +16787,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16795,7 +16795,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16803,7 +16803,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16819,7 +16819,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16827,7 +16827,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16835,7 +16835,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16843,7 +16843,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16853,7 +16853,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16861,7 +16861,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16869,7 +16869,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16877,7 +16877,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16890,7 +16890,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16898,7 +16898,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16906,7 +16906,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16914,7 +16914,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16924,7 +16924,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16932,7 +16932,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16940,7 +16940,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16948,7 +16948,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16967,7 +16967,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16975,7 +16975,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16983,7 +16983,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -16991,7 +16991,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17001,7 +17001,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17009,7 +17009,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17017,7 +17017,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17025,7 +17025,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17038,7 +17038,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17046,7 +17046,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17054,7 +17054,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17062,7 +17062,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17072,7 +17072,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17080,7 +17080,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17088,7 +17088,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17096,7 +17096,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17112,7 +17112,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17120,7 +17120,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17128,7 +17128,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17136,7 +17136,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17146,7 +17146,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17154,7 +17154,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17162,7 +17162,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17170,7 +17170,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17183,7 +17183,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17191,7 +17191,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17199,7 +17199,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17207,7 +17207,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17217,7 +17217,7 @@ void test7()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17225,7 +17225,7 @@ void test7()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17233,7 +17233,7 @@ void test7()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17241,7 +17241,7 @@ void test7()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
@@ -17258,7 +17258,7 @@ void test7()
 void test8()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -17280,7 +17280,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890");
                                     assert(ios.width() == 0);
@@ -17288,7 +17288,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890***************");
                                     assert(ios.width() == 0);
@@ -17296,7 +17296,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
@@ -17304,7 +17304,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
@@ -17314,7 +17314,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17322,7 +17322,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0***********");
                                     assert(ios.width() == 0);
@@ -17330,7 +17330,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17338,7 +17338,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17351,7 +17351,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.");
                                     assert(ios.width() == 0);
@@ -17359,7 +17359,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.**************");
                                     assert(ios.width() == 0);
@@ -17367,7 +17367,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
@@ -17375,7 +17375,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
@@ -17385,7 +17385,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17393,7 +17393,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;**********");
                                     assert(ios.width() == 0);
@@ -17401,7 +17401,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17409,7 +17409,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17425,7 +17425,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890");
                                     assert(ios.width() == 0);
@@ -17433,7 +17433,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890**************");
                                     assert(ios.width() == 0);
@@ -17441,7 +17441,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************+1234567890");
                                     assert(ios.width() == 0);
@@ -17449,7 +17449,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**************1234567890");
                                     assert(ios.width() == 0);
@@ -17459,7 +17459,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17467,7 +17467,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0**********");
                                     assert(ios.width() == 0);
@@ -17475,7 +17475,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17483,7 +17483,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17496,7 +17496,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.");
                                     assert(ios.width() == 0);
@@ -17504,7 +17504,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.*************");
                                     assert(ios.width() == 0);
@@ -17512,7 +17512,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1234567890.");
                                     assert(ios.width() == 0);
@@ -17520,7 +17520,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1234567890.");
                                     assert(ios.width() == 0);
@@ -17530,7 +17530,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17538,7 +17538,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;*********");
                                     assert(ios.width() == 0);
@@ -17546,7 +17546,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********+1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17554,7 +17554,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17573,7 +17573,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890");
                                     assert(ios.width() == 0);
@@ -17581,7 +17581,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890***************");
                                     assert(ios.width() == 0);
@@ -17589,7 +17589,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
@@ -17597,7 +17597,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
@@ -17607,7 +17607,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17615,7 +17615,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0***********");
                                     assert(ios.width() == 0);
@@ -17623,7 +17623,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17631,7 +17631,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17644,7 +17644,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.");
                                     assert(ios.width() == 0);
@@ -17652,7 +17652,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.**************");
                                     assert(ios.width() == 0);
@@ -17660,7 +17660,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
@@ -17668,7 +17668,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
@@ -17678,7 +17678,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17686,7 +17686,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;**********");
                                     assert(ios.width() == 0);
@@ -17694,7 +17694,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17702,7 +17702,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17718,7 +17718,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890");
                                     assert(ios.width() == 0);
@@ -17726,7 +17726,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890**************");
                                     assert(ios.width() == 0);
@@ -17734,7 +17734,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**************+1234567890");
                                     assert(ios.width() == 0);
@@ -17742,7 +17742,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**************1234567890");
                                     assert(ios.width() == 0);
@@ -17752,7 +17752,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17760,7 +17760,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0**********");
                                     assert(ios.width() == 0);
@@ -17768,7 +17768,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "**********+1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17776,7 +17776,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+**********1_234_567_89_0");
                                     assert(ios.width() == 0);
@@ -17789,7 +17789,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.");
                                     assert(ios.width() == 0);
@@ -17797,7 +17797,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.*************");
                                     assert(ios.width() == 0);
@@ -17805,7 +17805,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************+1234567890.");
                                     assert(ios.width() == 0);
@@ -17813,7 +17813,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*************1234567890.");
                                     assert(ios.width() == 0);
@@ -17823,7 +17823,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17831,7 +17831,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;*********");
                                     assert(ios.width() == 0);
@@ -17839,7 +17839,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********+1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17847,7 +17847,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*********1_234_567_89_0;");
                                     assert(ios.width() == 0);
@@ -17869,7 +17869,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
@@ -17877,7 +17877,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
@@ -17885,7 +17885,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -17893,7 +17893,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -17903,7 +17903,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -17911,7 +17911,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
@@ -17919,7 +17919,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -17927,7 +17927,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -17940,7 +17940,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
@@ -17948,7 +17948,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
@@ -17956,7 +17956,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -17964,7 +17964,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -17974,7 +17974,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -17982,7 +17982,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
@@ -17990,7 +17990,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -17998,7 +17998,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18014,7 +18014,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
@@ -18022,7 +18022,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
@@ -18030,7 +18030,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
@@ -18038,7 +18038,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
@@ -18048,7 +18048,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18056,7 +18056,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
@@ -18064,7 +18064,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18072,7 +18072,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18085,7 +18085,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
@@ -18093,7 +18093,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
@@ -18101,7 +18101,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
@@ -18109,7 +18109,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
@@ -18119,7 +18119,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18127,7 +18127,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
@@ -18135,7 +18135,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18143,7 +18143,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18162,7 +18162,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
@@ -18170,7 +18170,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
@@ -18178,7 +18178,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -18186,7 +18186,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -18196,7 +18196,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18204,7 +18204,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
@@ -18212,7 +18212,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18220,7 +18220,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18233,7 +18233,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
@@ -18241,7 +18241,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
@@ -18249,7 +18249,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -18257,7 +18257,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
@@ -18267,7 +18267,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18275,7 +18275,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
@@ -18283,7 +18283,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18291,7 +18291,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18307,7 +18307,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
@@ -18315,7 +18315,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
@@ -18323,7 +18323,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
@@ -18331,7 +18331,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
@@ -18341,7 +18341,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18349,7 +18349,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
@@ -18357,7 +18357,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18365,7 +18365,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18378,7 +18378,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
@@ -18386,7 +18386,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
@@ -18394,7 +18394,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
@@ -18402,7 +18402,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
@@ -18412,7 +18412,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18420,7 +18420,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
@@ -18428,7 +18428,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18436,7 +18436,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
@@ -18458,7 +18458,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18466,7 +18466,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -18474,7 +18474,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18482,7 +18482,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18492,7 +18492,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18500,7 +18500,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -18508,7 +18508,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18516,7 +18516,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18529,7 +18529,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18537,7 +18537,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -18545,7 +18545,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18553,7 +18553,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18563,7 +18563,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18571,7 +18571,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -18579,7 +18579,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18587,7 +18587,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18603,7 +18603,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18611,7 +18611,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -18619,7 +18619,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18627,7 +18627,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18637,7 +18637,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18645,7 +18645,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -18653,7 +18653,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18661,7 +18661,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18674,7 +18674,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18682,7 +18682,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -18690,7 +18690,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18698,7 +18698,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18708,7 +18708,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18716,7 +18716,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -18724,7 +18724,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18732,7 +18732,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18751,7 +18751,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18759,7 +18759,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -18767,7 +18767,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18775,7 +18775,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18785,7 +18785,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18793,7 +18793,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -18801,7 +18801,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18809,7 +18809,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18822,7 +18822,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18830,7 +18830,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
@@ -18838,7 +18838,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18846,7 +18846,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18856,7 +18856,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18864,7 +18864,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
@@ -18872,7 +18872,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18880,7 +18880,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18896,7 +18896,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18904,7 +18904,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -18912,7 +18912,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18920,7 +18920,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18930,7 +18930,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18938,7 +18938,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -18946,7 +18946,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18954,7 +18954,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -18967,7 +18967,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18975,7 +18975,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
@@ -18983,7 +18983,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
@@ -18991,7 +18991,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
@@ -19001,7 +19001,7 @@ void test8()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -19009,7 +19009,7 @@ void test8()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
@@ -19017,7 +19017,7 @@ void test8()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -19025,7 +19025,7 @@ void test8()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
@@ -19046,7 +19046,7 @@ void test8()
 void test9()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -19068,7 +19068,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
@@ -19076,7 +19076,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
@@ -19084,7 +19084,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
@@ -19092,7 +19092,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
@@ -19102,7 +19102,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
@@ -19110,7 +19110,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
@@ -19118,7 +19118,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
@@ -19126,7 +19126,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
@@ -19139,7 +19139,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.e+00");
                                     assert(ios.width() == 0);
@@ -19147,7 +19147,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.e+00******************");
                                     assert(ios.width() == 0);
@@ -19155,7 +19155,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0.e+00");
                                     assert(ios.width() == 0);
@@ -19163,7 +19163,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0.e+00");
                                     assert(ios.width() == 0);
@@ -19173,7 +19173,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;e+00");
                                     assert(ios.width() == 0);
@@ -19181,7 +19181,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;e+00******************");
                                     assert(ios.width() == 0);
@@ -19189,7 +19189,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0;e+00");
                                     assert(ios.width() == 0);
@@ -19197,7 +19197,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0;e+00");
                                     assert(ios.width() == 0);
@@ -19213,7 +19213,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
@@ -19221,7 +19221,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
@@ -19229,7 +19229,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
@@ -19237,7 +19237,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
@@ -19247,7 +19247,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
@@ -19255,7 +19255,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
@@ -19263,7 +19263,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
@@ -19271,7 +19271,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
@@ -19284,7 +19284,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.e+00");
                                     assert(ios.width() == 0);
@@ -19292,7 +19292,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.e+00******************");
                                     assert(ios.width() == 0);
@@ -19300,7 +19300,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0.e+00");
                                     assert(ios.width() == 0);
@@ -19308,7 +19308,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0.e+00");
                                     assert(ios.width() == 0);
@@ -19318,7 +19318,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;e+00");
                                     assert(ios.width() == 0);
@@ -19326,7 +19326,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;e+00******************");
                                     assert(ios.width() == 0);
@@ -19334,7 +19334,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0;e+00");
                                     assert(ios.width() == 0);
@@ -19342,7 +19342,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0;e+00");
                                     assert(ios.width() == 0);
@@ -19361,7 +19361,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
@@ -19369,7 +19369,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
@@ -19377,7 +19377,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
@@ -19385,7 +19385,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
@@ -19395,7 +19395,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
@@ -19403,7 +19403,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
@@ -19411,7 +19411,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
@@ -19419,7 +19419,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
@@ -19432,7 +19432,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.E+00");
                                     assert(ios.width() == 0);
@@ -19440,7 +19440,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.E+00******************");
                                     assert(ios.width() == 0);
@@ -19448,7 +19448,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0.E+00");
                                     assert(ios.width() == 0);
@@ -19456,7 +19456,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0.E+00");
                                     assert(ios.width() == 0);
@@ -19466,7 +19466,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;E+00");
                                     assert(ios.width() == 0);
@@ -19474,7 +19474,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;E+00******************");
                                     assert(ios.width() == 0);
@@ -19482,7 +19482,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0;E+00");
                                     assert(ios.width() == 0);
@@ -19490,7 +19490,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0;E+00");
                                     assert(ios.width() == 0);
@@ -19506,7 +19506,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
@@ -19514,7 +19514,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
@@ -19522,7 +19522,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
@@ -19530,7 +19530,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
@@ -19540,7 +19540,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
@@ -19548,7 +19548,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
@@ -19556,7 +19556,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
@@ -19564,7 +19564,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
@@ -19577,7 +19577,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.E+00");
                                     assert(ios.width() == 0);
@@ -19585,7 +19585,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.E+00******************");
                                     assert(ios.width() == 0);
@@ -19593,7 +19593,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0.E+00");
                                     assert(ios.width() == 0);
@@ -19601,7 +19601,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0.E+00");
                                     assert(ios.width() == 0);
@@ -19611,7 +19611,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;E+00");
                                     assert(ios.width() == 0);
@@ -19619,7 +19619,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;E+00******************");
                                     assert(ios.width() == 0);
@@ -19627,7 +19627,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0;E+00");
                                     assert(ios.width() == 0);
@@ -19635,7 +19635,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0;E+00");
                                     assert(ios.width() == 0);
@@ -19657,7 +19657,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
@@ -19665,7 +19665,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
@@ -19673,7 +19673,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
@@ -19681,7 +19681,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
@@ -19691,7 +19691,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
@@ -19699,7 +19699,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
@@ -19707,7 +19707,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
@@ -19715,7 +19715,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
@@ -19728,7 +19728,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
@@ -19736,7 +19736,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
@@ -19744,7 +19744,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
@@ -19752,7 +19752,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
@@ -19762,7 +19762,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
@@ -19770,7 +19770,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
@@ -19778,7 +19778,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
@@ -19786,7 +19786,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
@@ -19802,7 +19802,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
@@ -19810,7 +19810,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
@@ -19818,7 +19818,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
@@ -19826,7 +19826,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
@@ -19836,7 +19836,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
@@ -19844,7 +19844,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
@@ -19852,7 +19852,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
@@ -19860,7 +19860,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
@@ -19873,7 +19873,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
@@ -19881,7 +19881,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
@@ -19889,7 +19889,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
@@ -19897,7 +19897,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
@@ -19907,7 +19907,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
@@ -19915,7 +19915,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
@@ -19923,7 +19923,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
@@ -19931,7 +19931,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
@@ -19950,7 +19950,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
@@ -19958,7 +19958,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
@@ -19966,7 +19966,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
@@ -19974,7 +19974,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
@@ -19984,7 +19984,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
@@ -19992,7 +19992,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
@@ -20000,7 +20000,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
@@ -20008,7 +20008,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
@@ -20021,7 +20021,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
@@ -20029,7 +20029,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
@@ -20037,7 +20037,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
@@ -20045,7 +20045,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
@@ -20055,7 +20055,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
@@ -20063,7 +20063,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
@@ -20071,7 +20071,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
@@ -20079,7 +20079,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
@@ -20095,7 +20095,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
@@ -20103,7 +20103,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
@@ -20111,7 +20111,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
@@ -20119,7 +20119,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
@@ -20129,7 +20129,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
@@ -20137,7 +20137,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
@@ -20145,7 +20145,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
@@ -20153,7 +20153,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
@@ -20166,7 +20166,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
@@ -20174,7 +20174,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
@@ -20182,7 +20182,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
@@ -20190,7 +20190,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
@@ -20200,7 +20200,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
@@ -20208,7 +20208,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
@@ -20216,7 +20216,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
@@ -20224,7 +20224,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
@@ -20246,7 +20246,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20254,7 +20254,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
@@ -20262,7 +20262,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20270,7 +20270,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20280,7 +20280,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20288,7 +20288,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
@@ -20296,7 +20296,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20304,7 +20304,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20317,7 +20317,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20325,7 +20325,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
@@ -20333,7 +20333,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20341,7 +20341,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20351,7 +20351,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20359,7 +20359,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
@@ -20367,7 +20367,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20375,7 +20375,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20391,7 +20391,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20399,7 +20399,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
@@ -20407,7 +20407,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20415,7 +20415,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20425,7 +20425,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20433,7 +20433,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
@@ -20441,7 +20441,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20449,7 +20449,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20462,7 +20462,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20470,7 +20470,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
@@ -20478,7 +20478,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20486,7 +20486,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
@@ -20496,7 +20496,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20504,7 +20504,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
@@ -20512,7 +20512,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20520,7 +20520,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
@@ -20539,7 +20539,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20547,7 +20547,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
@@ -20555,7 +20555,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20563,7 +20563,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20573,7 +20573,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20581,7 +20581,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
@@ -20589,7 +20589,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20597,7 +20597,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20610,7 +20610,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20618,7 +20618,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
@@ -20626,7 +20626,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20634,7 +20634,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20644,7 +20644,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20652,7 +20652,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
@@ -20660,7 +20660,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20668,7 +20668,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20684,7 +20684,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20692,7 +20692,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
@@ -20700,7 +20700,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20708,7 +20708,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20718,7 +20718,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20726,7 +20726,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
@@ -20734,7 +20734,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20742,7 +20742,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20755,7 +20755,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20763,7 +20763,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
@@ -20771,7 +20771,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20779,7 +20779,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
@@ -20789,7 +20789,7 @@ void test9()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20797,7 +20797,7 @@ void test9()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
@@ -20805,7 +20805,7 @@ void test9()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20813,7 +20813,7 @@ void test9()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
@@ -20836,7 +20836,7 @@ void test9()
 void test10()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -20858,7 +20858,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -20866,7 +20866,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -20874,7 +20874,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -20882,7 +20882,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -20892,7 +20892,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
@@ -20900,7 +20900,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
@@ -20908,7 +20908,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -20916,7 +20916,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
@@ -20929,7 +20929,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
@@ -20937,7 +20937,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
@@ -20945,7 +20945,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -20953,7 +20953,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
@@ -20963,7 +20963,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
@@ -20971,7 +20971,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
@@ -20979,7 +20979,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -20987,7 +20987,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
@@ -21003,7 +21003,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -21011,7 +21011,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -21019,7 +21019,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -21027,7 +21027,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -21037,7 +21037,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
@@ -21045,7 +21045,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
@@ -21053,7 +21053,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
@@ -21061,7 +21061,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
@@ -21074,7 +21074,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
@@ -21082,7 +21082,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
@@ -21090,7 +21090,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
@@ -21098,7 +21098,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
@@ -21108,7 +21108,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
@@ -21116,7 +21116,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
@@ -21124,7 +21124,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
@@ -21132,7 +21132,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
@@ -21151,7 +21151,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -21159,7 +21159,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -21167,7 +21167,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -21175,7 +21175,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -21185,7 +21185,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
@@ -21193,7 +21193,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
@@ -21201,7 +21201,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -21209,7 +21209,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
@@ -21222,7 +21222,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
@@ -21230,7 +21230,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
@@ -21238,7 +21238,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -21246,7 +21246,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
@@ -21256,7 +21256,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
@@ -21264,7 +21264,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
@@ -21272,7 +21272,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -21280,7 +21280,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
@@ -21296,7 +21296,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -21304,7 +21304,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -21312,7 +21312,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -21320,7 +21320,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -21330,7 +21330,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
@@ -21338,7 +21338,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
@@ -21346,7 +21346,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
@@ -21354,7 +21354,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
@@ -21367,7 +21367,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
@@ -21375,7 +21375,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
@@ -21383,7 +21383,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
@@ -21391,7 +21391,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
@@ -21401,7 +21401,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
@@ -21409,7 +21409,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
@@ -21417,7 +21417,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
@@ -21425,7 +21425,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
@@ -21447,7 +21447,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2e+09");
                                     assert(ios.width() == 0);
@@ -21455,7 +21455,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2e+09******************");
                                     assert(ios.width() == 0);
@@ -21463,7 +21463,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
@@ -21471,7 +21471,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
@@ -21481,7 +21481,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2e+09");
                                     assert(ios.width() == 0);
@@ -21489,7 +21489,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2e+09******************");
                                     assert(ios.width() == 0);
@@ -21497,7 +21497,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
@@ -21505,7 +21505,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
@@ -21518,7 +21518,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2e+09");
                                     assert(ios.width() == 0);
@@ -21526,7 +21526,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2e+09******************");
                                     assert(ios.width() == 0);
@@ -21534,7 +21534,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
@@ -21542,7 +21542,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
@@ -21552,7 +21552,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2e+09");
                                     assert(ios.width() == 0);
@@ -21560,7 +21560,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2e+09******************");
                                     assert(ios.width() == 0);
@@ -21568,7 +21568,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
@@ -21576,7 +21576,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
@@ -21592,7 +21592,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2e+09");
                                     assert(ios.width() == 0);
@@ -21600,7 +21600,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2e+09*****************");
                                     assert(ios.width() == 0);
@@ -21608,7 +21608,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1.2e+09");
                                     assert(ios.width() == 0);
@@ -21616,7 +21616,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1.2e+09");
                                     assert(ios.width() == 0);
@@ -21626,7 +21626,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2e+09");
                                     assert(ios.width() == 0);
@@ -21634,7 +21634,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2e+09*****************");
                                     assert(ios.width() == 0);
@@ -21642,7 +21642,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1;2e+09");
                                     assert(ios.width() == 0);
@@ -21650,7 +21650,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1;2e+09");
                                     assert(ios.width() == 0);
@@ -21663,7 +21663,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2e+09");
                                     assert(ios.width() == 0);
@@ -21671,7 +21671,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2e+09*****************");
                                     assert(ios.width() == 0);
@@ -21679,7 +21679,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1.2e+09");
                                     assert(ios.width() == 0);
@@ -21687,7 +21687,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1.2e+09");
                                     assert(ios.width() == 0);
@@ -21697,7 +21697,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2e+09");
                                     assert(ios.width() == 0);
@@ -21705,7 +21705,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2e+09*****************");
                                     assert(ios.width() == 0);
@@ -21713,7 +21713,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1;2e+09");
                                     assert(ios.width() == 0);
@@ -21721,7 +21721,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1;2e+09");
                                     assert(ios.width() == 0);
@@ -21740,7 +21740,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2E+09");
                                     assert(ios.width() == 0);
@@ -21748,7 +21748,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2E+09******************");
                                     assert(ios.width() == 0);
@@ -21756,7 +21756,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
@@ -21764,7 +21764,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
@@ -21774,7 +21774,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2E+09");
                                     assert(ios.width() == 0);
@@ -21782,7 +21782,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2E+09******************");
                                     assert(ios.width() == 0);
@@ -21790,7 +21790,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
@@ -21798,7 +21798,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
@@ -21811,7 +21811,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2E+09");
                                     assert(ios.width() == 0);
@@ -21819,7 +21819,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.2E+09******************");
                                     assert(ios.width() == 0);
@@ -21827,7 +21827,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
@@ -21835,7 +21835,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
@@ -21845,7 +21845,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2E+09");
                                     assert(ios.width() == 0);
@@ -21853,7 +21853,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;2E+09******************");
                                     assert(ios.width() == 0);
@@ -21861,7 +21861,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
@@ -21869,7 +21869,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
@@ -21885,7 +21885,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2E+09");
                                     assert(ios.width() == 0);
@@ -21893,7 +21893,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2E+09*****************");
                                     assert(ios.width() == 0);
@@ -21901,7 +21901,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1.2E+09");
                                     assert(ios.width() == 0);
@@ -21909,7 +21909,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1.2E+09");
                                     assert(ios.width() == 0);
@@ -21919,7 +21919,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2E+09");
                                     assert(ios.width() == 0);
@@ -21927,7 +21927,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2E+09*****************");
                                     assert(ios.width() == 0);
@@ -21935,7 +21935,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1;2E+09");
                                     assert(ios.width() == 0);
@@ -21943,7 +21943,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1;2E+09");
                                     assert(ios.width() == 0);
@@ -21956,7 +21956,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2E+09");
                                     assert(ios.width() == 0);
@@ -21964,7 +21964,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.2E+09*****************");
                                     assert(ios.width() == 0);
@@ -21972,7 +21972,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1.2E+09");
                                     assert(ios.width() == 0);
@@ -21980,7 +21980,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1.2E+09");
                                     assert(ios.width() == 0);
@@ -21990,7 +21990,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2E+09");
                                     assert(ios.width() == 0);
@@ -21998,7 +21998,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;2E+09*****************");
                                     assert(ios.width() == 0);
@@ -22006,7 +22006,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************+1;2E+09");
                                     assert(ios.width() == 0);
@@ -22014,7 +22014,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+*****************1;2E+09");
                                     assert(ios.width() == 0);
@@ -22042,7 +22042,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22050,7 +22050,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22058,7 +22058,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22066,7 +22066,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22076,7 +22076,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22084,7 +22084,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22092,7 +22092,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22100,7 +22100,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22113,7 +22113,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22121,7 +22121,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22129,7 +22129,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22137,7 +22137,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22147,7 +22147,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22155,7 +22155,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22163,7 +22163,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22171,7 +22171,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22187,7 +22187,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22195,7 +22195,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22203,7 +22203,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22211,7 +22211,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22221,7 +22221,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22229,7 +22229,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22237,7 +22237,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22245,7 +22245,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22258,7 +22258,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22266,7 +22266,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22274,7 +22274,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22282,7 +22282,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22292,7 +22292,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22300,7 +22300,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22308,7 +22308,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22316,7 +22316,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
@@ -22335,7 +22335,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22343,7 +22343,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22351,7 +22351,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22359,7 +22359,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22369,7 +22369,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22377,7 +22377,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22385,7 +22385,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22393,7 +22393,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22406,7 +22406,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22414,7 +22414,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22422,7 +22422,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22430,7 +22430,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22440,7 +22440,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22448,7 +22448,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22456,7 +22456,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22464,7 +22464,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22480,7 +22480,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22488,7 +22488,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22496,7 +22496,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22504,7 +22504,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22514,7 +22514,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22522,7 +22522,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22530,7 +22530,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22538,7 +22538,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22551,7 +22551,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22559,7 +22559,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22567,7 +22567,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22575,7 +22575,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22585,7 +22585,7 @@ void test10()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22593,7 +22593,7 @@ void test10()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22601,7 +22601,7 @@ void test10()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22609,7 +22609,7 @@ void test10()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
@@ -22626,7 +22626,7 @@ void test10()
 void test11()
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     std::locale lc = std::locale::classic();
     std::locale lg(lc, new my_numpunct);
     const my_facet f(1);
@@ -22648,7 +22648,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -22656,7 +22656,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -22664,7 +22664,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -22672,7 +22672,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -22682,7 +22682,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -22690,7 +22690,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -22698,7 +22698,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -22706,7 +22706,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -22719,7 +22719,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -22727,7 +22727,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -22735,7 +22735,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -22743,7 +22743,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -22753,7 +22753,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -22761,7 +22761,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -22769,7 +22769,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -22777,7 +22777,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -22793,7 +22793,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -22801,7 +22801,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -22809,7 +22809,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -22817,7 +22817,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -22827,7 +22827,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -22835,7 +22835,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -22843,7 +22843,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -22851,7 +22851,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -22864,7 +22864,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -22872,7 +22872,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -22880,7 +22880,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -22888,7 +22888,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -22898,7 +22898,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -22906,7 +22906,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -22914,7 +22914,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -22922,7 +22922,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -22941,7 +22941,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -22949,7 +22949,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -22957,7 +22957,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -22965,7 +22965,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -22975,7 +22975,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -22983,7 +22983,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -22991,7 +22991,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -22999,7 +22999,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -23012,7 +23012,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23020,7 +23020,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -23028,7 +23028,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23036,7 +23036,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23046,7 +23046,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23054,7 +23054,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -23062,7 +23062,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23070,7 +23070,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23086,7 +23086,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23094,7 +23094,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -23102,7 +23102,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23110,7 +23110,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -23120,7 +23120,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23128,7 +23128,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -23136,7 +23136,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23144,7 +23144,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -23157,7 +23157,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23165,7 +23165,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -23173,7 +23173,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23181,7 +23181,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23191,7 +23191,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23199,7 +23199,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -23207,7 +23207,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23215,7 +23215,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23237,7 +23237,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23245,7 +23245,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -23253,7 +23253,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23261,7 +23261,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -23271,7 +23271,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23279,7 +23279,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -23287,7 +23287,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23295,7 +23295,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -23308,7 +23308,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -23316,7 +23316,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -23324,7 +23324,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -23332,7 +23332,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -23342,7 +23342,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -23350,7 +23350,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -23358,7 +23358,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -23366,7 +23366,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -23382,7 +23382,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23390,7 +23390,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -23398,7 +23398,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23406,7 +23406,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -23416,7 +23416,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23424,7 +23424,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -23432,7 +23432,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23440,7 +23440,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -23453,7 +23453,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -23461,7 +23461,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -23469,7 +23469,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -23477,7 +23477,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -23487,7 +23487,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -23495,7 +23495,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -23503,7 +23503,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -23511,7 +23511,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -23530,7 +23530,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23538,7 +23538,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -23546,7 +23546,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23554,7 +23554,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -23564,7 +23564,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23572,7 +23572,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -23580,7 +23580,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23588,7 +23588,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -23601,7 +23601,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23609,7 +23609,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -23617,7 +23617,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23625,7 +23625,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23635,7 +23635,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23643,7 +23643,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -23651,7 +23651,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23659,7 +23659,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23675,7 +23675,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23683,7 +23683,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -23691,7 +23691,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23699,7 +23699,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -23709,7 +23709,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23717,7 +23717,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -23725,7 +23725,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -23733,7 +23733,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -23746,7 +23746,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23754,7 +23754,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -23762,7 +23762,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23770,7 +23770,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -23780,7 +23780,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23788,7 +23788,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -23796,7 +23796,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23804,7 +23804,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -23826,7 +23826,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23834,7 +23834,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -23842,7 +23842,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23850,7 +23850,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -23860,7 +23860,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23868,7 +23868,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -23876,7 +23876,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23884,7 +23884,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -23897,7 +23897,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -23905,7 +23905,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -23913,7 +23913,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -23921,7 +23921,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -23931,7 +23931,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -23939,7 +23939,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -23947,7 +23947,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -23955,7 +23955,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -23971,7 +23971,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23979,7 +23979,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -23987,7 +23987,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -23995,7 +23995,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -24005,7 +24005,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
@@ -24013,7 +24013,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
@@ -24021,7 +24021,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
@@ -24029,7 +24029,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
@@ -24042,7 +24042,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -24050,7 +24050,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
@@ -24058,7 +24058,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
@@ -24066,7 +24066,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
@@ -24076,7 +24076,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -24084,7 +24084,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
@@ -24092,7 +24092,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
@@ -24100,7 +24100,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
@@ -24119,7 +24119,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -24127,7 +24127,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -24135,7 +24135,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -24143,7 +24143,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -24153,7 +24153,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -24161,7 +24161,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -24169,7 +24169,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -24177,7 +24177,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -24190,7 +24190,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -24198,7 +24198,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -24206,7 +24206,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -24214,7 +24214,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -24224,7 +24224,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -24232,7 +24232,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -24240,7 +24240,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -24248,7 +24248,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -24264,7 +24264,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -24272,7 +24272,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -24280,7 +24280,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -24288,7 +24288,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -24298,7 +24298,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
@@ -24306,7 +24306,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
@@ -24314,7 +24314,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
@@ -24322,7 +24322,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
@@ -24335,7 +24335,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -24343,7 +24343,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
@@ -24351,7 +24351,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
@@ -24359,7 +24359,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
@@ -24369,7 +24369,7 @@ void test11()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -24377,7 +24377,7 @@ void test11()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
@@ -24385,7 +24385,7 @@ void test11()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
@@ -24393,7 +24393,7 @@ void test11()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
@@ -24420,7 +24420,7 @@ void test12()
 #if defined(__APPLE__) && defined(__x86_64__)
 // This test is failing on FreeBSD, possibly due to 
diff erent representations
 // of the floating point numbers.
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     const my_facet f(1);
     char str[200];
     {
@@ -24441,7 +24441,7 @@ void test12()
                             ios.imbue(lc);
                             {
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24449,7 +24449,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -24457,7 +24457,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24465,7 +24465,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -24475,7 +24475,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24483,7 +24483,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -24491,7 +24491,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24499,7 +24499,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -24512,7 +24512,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24520,7 +24520,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -24528,7 +24528,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24536,7 +24536,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -24546,7 +24546,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24554,7 +24554,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -24562,7 +24562,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24570,7 +24570,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -24586,7 +24586,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24594,7 +24594,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -24602,7 +24602,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24610,7 +24610,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24620,7 +24620,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24628,7 +24628,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -24636,7 +24636,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24644,7 +24644,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24657,7 +24657,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24665,7 +24665,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -24673,7 +24673,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24681,7 +24681,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24691,7 +24691,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24699,7 +24699,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -24707,7 +24707,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24715,7 +24715,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -24734,7 +24734,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24742,7 +24742,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -24750,7 +24750,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24758,7 +24758,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -24768,7 +24768,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24776,7 +24776,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -24784,7 +24784,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24792,7 +24792,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -24805,7 +24805,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24813,7 +24813,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -24821,7 +24821,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24829,7 +24829,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -24839,7 +24839,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24847,7 +24847,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -24855,7 +24855,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24863,7 +24863,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -24879,7 +24879,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24887,7 +24887,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -24895,7 +24895,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24903,7 +24903,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24913,7 +24913,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24921,7 +24921,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -24929,7 +24929,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24937,7 +24937,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24950,7 +24950,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24958,7 +24958,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -24966,7 +24966,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24974,7 +24974,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24984,7 +24984,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -24992,7 +24992,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -25000,7 +25000,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25008,7 +25008,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25030,7 +25030,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25038,7 +25038,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -25046,7 +25046,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25054,7 +25054,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25064,7 +25064,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25072,7 +25072,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -25080,7 +25080,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25088,7 +25088,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25101,7 +25101,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25109,7 +25109,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -25117,7 +25117,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25125,7 +25125,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25135,7 +25135,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25143,7 +25143,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -25151,7 +25151,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25159,7 +25159,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25175,7 +25175,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25183,7 +25183,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -25191,7 +25191,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25199,7 +25199,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25209,7 +25209,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25217,7 +25217,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -25225,7 +25225,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25233,7 +25233,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25246,7 +25246,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25254,7 +25254,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -25262,7 +25262,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25270,7 +25270,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25280,7 +25280,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25288,7 +25288,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -25296,7 +25296,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25304,7 +25304,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25323,7 +25323,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25331,7 +25331,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -25339,7 +25339,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25347,7 +25347,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25357,7 +25357,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25365,7 +25365,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -25373,7 +25373,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25381,7 +25381,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25394,7 +25394,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25402,7 +25402,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -25410,7 +25410,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25418,7 +25418,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25428,7 +25428,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25436,7 +25436,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -25444,7 +25444,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25452,7 +25452,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25468,7 +25468,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25476,7 +25476,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -25484,7 +25484,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25492,7 +25492,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25502,7 +25502,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25510,7 +25510,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -25518,7 +25518,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25526,7 +25526,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25539,7 +25539,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25547,7 +25547,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -25555,7 +25555,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25563,7 +25563,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25573,7 +25573,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25581,7 +25581,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -25589,7 +25589,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25597,7 +25597,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25625,7 +25625,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25633,7 +25633,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -25641,7 +25641,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25649,7 +25649,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25659,7 +25659,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25667,7 +25667,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -25675,7 +25675,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25683,7 +25683,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25696,7 +25696,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25704,7 +25704,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -25712,7 +25712,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25720,7 +25720,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25730,7 +25730,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25738,7 +25738,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
@@ -25746,7 +25746,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25754,7 +25754,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25770,7 +25770,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25778,7 +25778,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -25786,7 +25786,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25794,7 +25794,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25804,7 +25804,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25812,7 +25812,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -25820,7 +25820,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25828,7 +25828,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25841,7 +25841,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25849,7 +25849,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -25857,7 +25857,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25865,7 +25865,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25875,7 +25875,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25883,7 +25883,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
@@ -25891,7 +25891,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25899,7 +25899,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
@@ -25918,7 +25918,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25926,7 +25926,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -25934,7 +25934,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25942,7 +25942,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25952,7 +25952,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25960,7 +25960,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -25968,7 +25968,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25976,7 +25976,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -25989,7 +25989,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -25997,7 +25997,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -26005,7 +26005,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26013,7 +26013,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -26023,7 +26023,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26031,7 +26031,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
@@ -26039,7 +26039,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26047,7 +26047,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    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);
@@ -26063,7 +26063,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26071,7 +26071,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -26079,7 +26079,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26087,7 +26087,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26097,7 +26097,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26105,7 +26105,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -26113,7 +26113,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26121,7 +26121,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26134,7 +26134,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26142,7 +26142,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -26150,7 +26150,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26158,7 +26158,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26168,7 +26168,7 @@ void test12()
                             {
                                 ios.width(0);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26176,7 +26176,7 @@ void test12()
                                 ios.width(25);
                                 left(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
@@ -26184,7 +26184,7 @@ void test12()
                                 ios.width(25);
                                 right(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
@@ -26192,7 +26192,7 @@ void test12()
                                 ios.width(25);
                                 internal(ios);
                                 {
-                                    iter = f.put(output_iterator<char*>(str), ios, '*', v);
+                                    iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
                                     std::string ex(str, iter.base());
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_long.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_long.pass.cpp
index ef9685c32f2d0..f09f27d2c166c 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_long.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_long.pass.cpp
@@ -19,7 +19,7 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-typedef std::num_put<char, output_iterator<char*> > F;
+typedef std::num_put<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -47,7 +47,7 @@ int main(int, char**)
         std::ios ios(0);
         long long v = 0;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0");
     }
@@ -55,7 +55,7 @@ int main(int, char**)
         std::ios ios(0);
         long long v = 1;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1");
     }
@@ -63,7 +63,7 @@ int main(int, char**)
         std::ios ios(0);
         long long v = -1;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1");
     }
@@ -71,7 +71,7 @@ int main(int, char**)
         std::ios ios(0);
         long long v = -1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1000");
     }
@@ -79,7 +79,7 @@ int main(int, char**)
         std::ios ios(0);
         long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1000");
     }
@@ -88,7 +88,7 @@ int main(int, char**)
         showpos(ios);
         long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "+1000");
     }
@@ -97,7 +97,7 @@ int main(int, char**)
         oct(ios);
         long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1750");
     }
@@ -107,7 +107,7 @@ int main(int, char**)
         showbase(ios);
         long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "01750");
     }
@@ -116,7 +116,7 @@ int main(int, char**)
         hex(ios);
         long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "3e8");
     }
@@ -126,7 +126,7 @@ int main(int, char**)
         showbase(ios);
         long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x3e8");
     }
@@ -137,7 +137,7 @@ int main(int, char**)
         uppercase(ios);
         long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0X3E8");
     }
@@ -149,7 +149,7 @@ int main(int, char**)
         uppercase(ios);
         long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0X3E_8");
     }
@@ -160,7 +160,7 @@ int main(int, char**)
         showbase(ios);
         long long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x7f_fff_ff_f");
     }
@@ -170,7 +170,7 @@ int main(int, char**)
         oct(ios);
         long long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "123_46_7");
     }
@@ -181,7 +181,7 @@ int main(int, char**)
         showbase(ios);
         long long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0_123_46_7");
     }
@@ -194,7 +194,7 @@ int main(int, char**)
         ios.width(15);
         long long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "*****0_123_46_7");
     }
@@ -207,7 +207,7 @@ int main(int, char**)
         ios.width(15);
         long long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0_123_46_7*****");
     }
@@ -220,7 +220,7 @@ int main(int, char**)
         ios.width(15);
         long long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "*****0_123_46_7");
         assert(ios.width() == 0);
@@ -234,7 +234,7 @@ int main(int, char**)
         ios.width(15);
         long long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "**0x7f_fff_ff_f");
     }
@@ -247,7 +247,7 @@ int main(int, char**)
         ios.width(15);
         long long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x7f_fff_ff_f**");
     }
@@ -260,7 +260,7 @@ int main(int, char**)
         ios.width(15);
         long long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x**7f_fff_ff_f");
         assert(ios.width() == 0);
@@ -273,7 +273,7 @@ int main(int, char**)
         right(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "***+1_00_0");
         assert(ios.width() == 0);
@@ -286,7 +286,7 @@ int main(int, char**)
         left(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "+1_00_0***");
         assert(ios.width() == 0);
@@ -299,7 +299,7 @@ int main(int, char**)
         internal(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "+***1_00_0");
         assert(ios.width() == 0);
@@ -312,7 +312,7 @@ int main(int, char**)
         showpos(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "***-1_00_0");
         assert(ios.width() == 0);
@@ -324,7 +324,7 @@ int main(int, char**)
         left(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-1_00_0***");
         assert(ios.width() == 0);
@@ -336,7 +336,7 @@ int main(int, char**)
         internal(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "-***1_00_0");
         assert(ios.width() == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp
index d9406e5b93948..c3a13746d941e 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp
@@ -19,7 +19,7 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-typedef std::num_put<char, output_iterator<char*> > F;
+typedef std::num_put<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -36,7 +36,7 @@ int main(int, char**)
         std::ios ios(0);
         void* v = 0;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         char expected_str[32] = {};
         // num_put::put uses %p for pointer types, but the exact format of %p is

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long.pass.cpp
index f7a3f9124e069..635585026aa00 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long.pass.cpp
@@ -19,7 +19,7 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-typedef std::num_put<char, output_iterator<char*> > F;
+typedef std::num_put<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -47,7 +47,7 @@ int main(int, char**)
         std::ios ios(0);
         unsigned long v = 0;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0");
     }
@@ -55,7 +55,7 @@ int main(int, char**)
         std::ios ios(0);
         unsigned long v = 1;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1");
     }
@@ -63,7 +63,7 @@ int main(int, char**)
         std::ios ios(0);
         unsigned long v = static_cast<unsigned long>(-1);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == (sizeof(unsigned long) == 4 ? "4294967295" : "18446744073709551615"));
     }
@@ -71,7 +71,7 @@ int main(int, char**)
         std::ios ios(0);
         unsigned long v = static_cast<unsigned long>(-1000);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == (sizeof(unsigned long) == 4 ? "4294966296" : "18446744073709550616"));
     }
@@ -79,7 +79,7 @@ int main(int, char**)
         std::ios ios(0);
         unsigned long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1000");
     }
@@ -88,7 +88,7 @@ int main(int, char**)
         showpos(ios);
         unsigned long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1000");
     }
@@ -97,7 +97,7 @@ int main(int, char**)
         oct(ios);
         unsigned long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1750");
     }
@@ -107,7 +107,7 @@ int main(int, char**)
         showbase(ios);
         unsigned long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "01750");
     }
@@ -116,7 +116,7 @@ int main(int, char**)
         hex(ios);
         unsigned long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "3e8");
     }
@@ -126,7 +126,7 @@ int main(int, char**)
         showbase(ios);
         unsigned long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x3e8");
     }
@@ -137,7 +137,7 @@ int main(int, char**)
         uppercase(ios);
         unsigned long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0X3E8");
     }
@@ -149,7 +149,7 @@ int main(int, char**)
         uppercase(ios);
         unsigned long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0X3E_8");
     }
@@ -160,7 +160,7 @@ int main(int, char**)
         showbase(ios);
         unsigned long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x7f_fff_ff_f");
     }
@@ -170,7 +170,7 @@ int main(int, char**)
         oct(ios);
         unsigned long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "123_46_7");
     }
@@ -181,7 +181,7 @@ int main(int, char**)
         showbase(ios);
         unsigned long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0_123_46_7");
     }
@@ -194,7 +194,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "*****0_123_46_7");
     }
@@ -207,7 +207,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0_123_46_7*****");
     }
@@ -220,7 +220,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "*****0_123_46_7");
         assert(ios.width() == 0);
@@ -234,7 +234,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "**0x7f_fff_ff_f");
     }
@@ -247,7 +247,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x7f_fff_ff_f**");
     }
@@ -260,7 +260,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x**7f_fff_ff_f");
         assert(ios.width() == 0);
@@ -273,7 +273,7 @@ int main(int, char**)
         right(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "****1_00_0");
         assert(ios.width() == 0);
@@ -286,7 +286,7 @@ int main(int, char**)
         left(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1_00_0****");
         assert(ios.width() == 0);
@@ -299,7 +299,7 @@ int main(int, char**)
         internal(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "****1_00_0");
         assert(ios.width() == 0);
@@ -312,7 +312,7 @@ int main(int, char**)
         showpos(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == (sizeof(unsigned long) == 4 ? "4_294_966_29_6"
                                                  : "18_446_744_073_709_550_61_6"));
@@ -325,7 +325,7 @@ int main(int, char**)
         left(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == (sizeof(unsigned long) == 4 ? "4_294_966_29_6"
                                                  : "18_446_744_073_709_550_61_6"));
@@ -338,7 +338,7 @@ int main(int, char**)
         internal(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == (sizeof(unsigned long) == 4 ? "4_294_966_29_6"
                                                  : "18_446_744_073_709_550_61_6"));

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long_long.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long_long.pass.cpp
index fb3126c02deef..89d86d1b75c6c 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long_long.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long_long.pass.cpp
@@ -19,7 +19,7 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-typedef std::num_put<char, output_iterator<char*> > F;
+typedef std::num_put<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -47,7 +47,7 @@ int main(int, char**)
         std::ios ios(0);
         unsigned long long v = 0;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0");
     }
@@ -55,7 +55,7 @@ int main(int, char**)
         std::ios ios(0);
         unsigned long long v = 1;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1");
     }
@@ -63,7 +63,7 @@ int main(int, char**)
         std::ios ios(0);
         unsigned long long v = static_cast<unsigned long long>(-1);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "18446744073709551615");
     }
@@ -71,7 +71,7 @@ int main(int, char**)
         std::ios ios(0);
         unsigned long long v = static_cast<unsigned long long>(-1000);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "18446744073709550616");
     }
@@ -79,7 +79,7 @@ int main(int, char**)
         std::ios ios(0);
         unsigned long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1000");
     }
@@ -88,7 +88,7 @@ int main(int, char**)
         showpos(ios);
         unsigned long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1000");
     }
@@ -97,7 +97,7 @@ int main(int, char**)
         oct(ios);
         unsigned long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1750");
     }
@@ -107,7 +107,7 @@ int main(int, char**)
         showbase(ios);
         unsigned long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "01750");
     }
@@ -116,7 +116,7 @@ int main(int, char**)
         hex(ios);
         unsigned long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "3e8");
     }
@@ -126,7 +126,7 @@ int main(int, char**)
         showbase(ios);
         unsigned long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x3e8");
     }
@@ -137,7 +137,7 @@ int main(int, char**)
         uppercase(ios);
         unsigned long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0X3E8");
     }
@@ -149,7 +149,7 @@ int main(int, char**)
         uppercase(ios);
         unsigned long long v = 1000;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0X3E_8");
     }
@@ -160,7 +160,7 @@ int main(int, char**)
         showbase(ios);
         unsigned long long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x7f_fff_ff_f");
     }
@@ -170,7 +170,7 @@ int main(int, char**)
         oct(ios);
         unsigned long long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "123_46_7");
     }
@@ -181,7 +181,7 @@ int main(int, char**)
         showbase(ios);
         unsigned long long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0_123_46_7");
     }
@@ -194,7 +194,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "*****0_123_46_7");
     }
@@ -207,7 +207,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0_123_46_7*****");
     }
@@ -220,7 +220,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long long v = 0123467;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "*****0_123_46_7");
         assert(ios.width() == 0);
@@ -234,7 +234,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "**0x7f_fff_ff_f");
     }
@@ -247,7 +247,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x7f_fff_ff_f**");
     }
@@ -260,7 +260,7 @@ int main(int, char**)
         ios.width(15);
         unsigned long long v = 2147483647;
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "0x**7f_fff_ff_f");
         assert(ios.width() == 0);
@@ -273,7 +273,7 @@ int main(int, char**)
         right(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "****1_00_0");
         assert(ios.width() == 0);
@@ -286,7 +286,7 @@ int main(int, char**)
         left(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "1_00_0****");
         assert(ios.width() == 0);
@@ -299,7 +299,7 @@ int main(int, char**)
         internal(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "****1_00_0");
         assert(ios.width() == 0);
@@ -312,7 +312,7 @@ int main(int, char**)
         showpos(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "18_446_744_073_709_550_61_6");
         assert(ios.width() == 0);
@@ -324,7 +324,7 @@ int main(int, char**)
         left(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "18_446_744_073_709_550_61_6");
         assert(ios.width() == 0);
@@ -336,7 +336,7 @@ int main(int, char**)
         internal(ios);
         ios.width(10);
         char str[50];
-        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
+        cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
         std::string ex(str, iter.base());
         assert(ex == "18_446_744_073_709_550_61_6");
         assert(ios.width() == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.put.byname/put1.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.put.byname/put1.pass.cpp
index 92b10ea9d0af3..dc16866a8a793 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.put.byname/put1.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.put.byname/put1.pass.cpp
@@ -35,7 +35,7 @@
 
 #include "platform_support.h" // locale name macros
 
-typedef std::time_put_byname<char, output_iterator<char*> > F;
+typedef std::time_put_byname<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -48,7 +48,7 @@ class my_facet
 int main(int, char**)
 {
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     tm t;
     t.tm_sec = 6;
     t.tm_min = 3;
@@ -63,15 +63,14 @@ int main(int, char**)
     {
         const my_facet f(LOCALE_en_US_UTF_8, 1);
         std::string pat("Today is %A which is abbreviated %a.");
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t,
-                     pat.data(), pat.data() + pat.size());
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, pat.data(), pat.data() + pat.size());
         std::string ex(str, iter.base());
         assert(ex == "Today is Saturday which is abbreviated Sat.");
     }
     {
         const my_facet f(LOCALE_fr_FR_UTF_8, 1);
         std::string pat("Today is %A which is abbreviated '%a'.");
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t,
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t,
                      pat.data(), pat.data() + pat.size());
         std::string ex(str, iter.base());
         assert((ex == "Today is Samedi which is abbreviated 'Sam'.")||

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put1.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put1.pass.cpp
index d39610e45254f..52243c67e7690 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put1.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put1.pass.cpp
@@ -19,7 +19,7 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-typedef std::time_put<char, output_iterator<char*> > F;
+typedef std::time_put<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -33,7 +33,7 @@ int main(int, char**)
 {
     const my_facet f(1);
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     tm t;
     t.tm_sec = 6;
     t.tm_min = 3;
@@ -47,15 +47,13 @@ int main(int, char**)
     std::ios ios(0);
     {
         std::string pat("Today is %A which is abbreviated %a.");
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t,
-                     pat.data(), pat.data() + pat.size());
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, pat.data(), pat.data() + pat.size());
         std::string ex(str, iter.base());
         assert(ex == "Today is Saturday which is abbreviated Sat.");
     }
     {
         std::string pat("The number of the month is %Om.");
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t,
-                     pat.data(), pat.data() + pat.size());
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, pat.data(), pat.data() + pat.size());
         std::string ex(str, iter.base());
         assert(ex == "The number of the month is 05.");
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp
index 12db93ea54340..c9b61e7a7aaef 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp
@@ -18,7 +18,7 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-typedef std::time_put<char, output_iterator<char*> > F;
+typedef std::time_put<char, cpp17_output_iterator<char*> > F;
 
 class my_facet
     : public F
@@ -32,7 +32,7 @@ int main(int, char**)
 {
     const my_facet f(1);
     char str[200];
-    output_iterator<char*> iter;
+    cpp17_output_iterator<char*> iter;
     tm t = {};
     t.tm_sec = 6;
     t.tm_min = 3;
@@ -45,277 +45,277 @@ int main(int, char**)
     t.tm_isdst = 1;
     std::ios ios(0);
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'A');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'A');
         std::string ex(str, iter.base());
         assert(ex == "Saturday");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'a');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'a');
         std::string ex(str, iter.base());
         assert(ex == "Sat");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'B');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'B');
         std::string ex(str, iter.base());
         assert(ex == "May");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'b');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'b');
         std::string ex(str, iter.base());
         assert(ex == "May");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'C');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'C');
         std::string ex(str, iter.base());
         assert(ex == "20");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'c');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'c');
         std::string ex(str, iter.base());
         assert(ex == "Sat May  2 13:03:06 2009");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'D');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'D');
         std::string ex(str, iter.base());
         assert(ex == "05/02/09");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'd');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'd');
         std::string ex(str, iter.base());
         assert(ex == "02");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'c', 'E');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'c', 'E');
         std::string ex(str, iter.base());
         assert(ex == "Sat May  2 13:03:06 2009");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'C', 'E');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'C', 'E');
         std::string ex(str, iter.base());
         assert(ex == "20");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'x', 'E');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'x', 'E');
         std::string ex(str, iter.base());
         assert(ex == "05/02/09");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'X', 'E');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'X', 'E');
         std::string ex(str, iter.base());
         assert(ex == "13:03:06");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'y', 'E');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'y', 'E');
         std::string ex(str, iter.base());
         assert(ex == "09");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'Y', 'E');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'Y', 'E');
         std::string ex(str, iter.base());
         assert(ex == "2009");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'd', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'd', 'O');
         std::string ex(str, iter.base());
         assert(ex == "02");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'e', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'e', 'O');
         std::string ex(str, iter.base());
         assert(ex == " 2");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'H', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'H', 'O');
         std::string ex(str, iter.base());
         assert(ex == "13");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'I', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'I', 'O');
         std::string ex(str, iter.base());
         assert(ex == "01");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'm', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'm', 'O');
         std::string ex(str, iter.base());
         assert(ex == "05");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'M', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'M', 'O');
         std::string ex(str, iter.base());
         assert(ex == "03");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'S', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'S', 'O');
         std::string ex(str, iter.base());
         assert(ex == "06");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'u', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'u', 'O');
         std::string ex(str, iter.base());
         assert(ex == "6");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'U', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'U', 'O');
         std::string ex(str, iter.base());
         assert(ex == "17");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'V', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'V', 'O');
         std::string ex(str, iter.base());
         assert(ex == "18");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'w', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'w', 'O');
         std::string ex(str, iter.base());
         assert(ex == "6");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'W', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'W', 'O');
         std::string ex(str, iter.base());
         assert(ex == "17");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'y', 'O');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'y', 'O');
         std::string ex(str, iter.base());
         assert(ex == "09");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'e');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'e');
         std::string ex(str, iter.base());
         assert(ex == " 2");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'F');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'F');
         std::string ex(str, iter.base());
         assert(ex == "2009-05-02");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'G');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'G');
         std::string ex(str, iter.base());
         assert(ex == "2009");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'g');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'g');
         std::string ex(str, iter.base());
         assert(ex == "09");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'H');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'H');
         std::string ex(str, iter.base());
         assert(ex == "13");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'h');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'h');
         std::string ex(str, iter.base());
         assert(ex == "May");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'I');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'I');
         std::string ex(str, iter.base());
         assert(ex == "01");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'j');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'j');
         std::string ex(str, iter.base());
         assert(ex == "122");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'M');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'M');
         std::string ex(str, iter.base());
         assert(ex == "03");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'm');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'm');
         std::string ex(str, iter.base());
         assert(ex == "05");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'n');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'n');
         std::string ex(str, iter.base());
         assert(ex == "\n");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'p');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'p');
         std::string ex(str, iter.base());
         assert(ex == "PM");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'R');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'R');
         std::string ex(str, iter.base());
         assert(ex == "13:03");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'r');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'r');
         std::string ex(str, iter.base());
         assert(ex == "01:03:06 PM");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'S');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'S');
         std::string ex(str, iter.base());
         assert(ex == "06");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'T');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'T');
         std::string ex(str, iter.base());
         assert(ex == "13:03:06");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 't');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 't');
         std::string ex(str, iter.base());
         assert(ex == "\t");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'U');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'U');
         std::string ex(str, iter.base());
         assert(ex == "17");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'u');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'u');
         std::string ex(str, iter.base());
         assert(ex == "6");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'V');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'V');
         std::string ex(str, iter.base());
         assert(ex == "18");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'W');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'W');
         std::string ex(str, iter.base());
         assert(ex == "17");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'w');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'w');
         std::string ex(str, iter.base());
         assert(ex == "6");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'X');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'X');
         std::string ex(str, iter.base());
         assert(ex == "13:03:06");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'x');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'x');
         std::string ex(str, iter.base());
         assert(ex == "05/02/09");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'Y');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'Y');
         std::string ex(str, iter.base());
         assert(ex == "2009");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'y');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'y');
         std::string ex(str, iter.base());
         assert(ex == "09");
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'Z');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'Z');
         std::string ex(str, iter.base());
 //        assert(ex == "EDT");  depends on time zone
     }
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'z');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'z');
         std::string ex(str, iter.base());
 //        assert(ex == "-0400");  depends on time zone
     }
@@ -323,13 +323,13 @@ int main(int, char**)
     // The Windows strftime() doesn't support the "%+" format. Depending on CRT
     // configuration of the invalid parameter handler, this can abort the process.
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, '+');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, '+');
         std::string ex(str, iter.base());
 //        assert(ex == "Sat May  2 13:03:06 EDT 2009");  depends on time zone
     }
 #endif
     {
-        iter = f.put(output_iterator<char*>(str), ios, '*', &t, '%');
+        iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, '%');
         std::string ex(str, iter.base());
         assert(ex == "%");
     }

diff  --git a/libcxx/test/std/numerics/numeric.ops/adjacent.
diff erence/adjacent_
diff erence.pass.cpp b/libcxx/test/std/numerics/numeric.ops/adjacent.
diff erence/adjacent_
diff erence.pass.cpp
index 25f310f0b63bb..5654a6d605572 100644
--- a/libcxx/test/std/numerics/numeric.ops/adjacent.
diff erence/adjacent_
diff erence.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/adjacent.
diff erence/adjacent_
diff erence.pass.cpp
@@ -79,31 +79,31 @@ class Y
 TEST_CONSTEXPR_CXX20 bool
 test()
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/numerics/numeric.ops/adjacent.
diff erence/adjacent_
diff erence_op.pass.cpp b/libcxx/test/std/numerics/numeric.ops/adjacent.
diff erence/adjacent_
diff erence_op.pass.cpp
index 352692276f761..6917d98565ade 100644
--- a/libcxx/test/std/numerics/numeric.ops/adjacent.
diff erence/adjacent_
diff erence_op.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/adjacent.
diff erence/adjacent_
diff erence_op.pass.cpp
@@ -140,31 +140,31 @@ class Y
 TEST_CONSTEXPR_CXX20 bool
 test()
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp b/libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp
index 2140a80bdff7a..e4d3e9d6ec9ac 100644
--- a/libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp
@@ -40,31 +40,31 @@ test()
 TEST_CONSTEXPR_CXX20 bool
 test()
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp b/libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp
index eeb06ab6dc78e..c4d9d26bd845f 100644
--- a/libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp
@@ -100,31 +100,31 @@ test()
 TEST_CONSTEXPR_CXX20 bool
 test()
 {
-    test<cpp17_input_iterator<const int*>, output_iterator<int*> >();
+    test<cpp17_input_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, forward_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, bidirectional_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, random_access_iterator<int*> >();
     test<cpp17_input_iterator<const int*>, int*>();
 
-    test<forward_iterator<const int*>, output_iterator<int*> >();
+    test<forward_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<forward_iterator<const int*>, forward_iterator<int*> >();
     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
     test<forward_iterator<const int*>, random_access_iterator<int*> >();
     test<forward_iterator<const int*>, int*>();
 
-    test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+    test<bidirectional_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
     test<bidirectional_iterator<const int*>, int*>();
 
-    test<random_access_iterator<const int*>, output_iterator<int*> >();
+    test<random_access_iterator<const int*>, cpp17_output_iterator<int*> >();
     test<random_access_iterator<const int*>, forward_iterator<int*> >();
     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
     test<random_access_iterator<const int*>, int*>();
 
-    test<const int*, output_iterator<int*> >();
+    test<const int*, cpp17_output_iterator<int*> >();
     test<const int*, forward_iterator<int*> >();
     test<const int*, bidirectional_iterator<int*> >();
     test<const int*, random_access_iterator<int*> >();

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.counted/counted.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.counted/counted.pass.cpp
index d19c991a508a5..6b9ad3fd9623f 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.counted/counted.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.counted/counted.pass.cpp
@@ -171,12 +171,12 @@ constexpr bool test() {
   }
 
   {
-    auto it = output_iterator<int*>(buffer);
+    auto it = cpp17_output_iterator<int*>(buffer);
 
     auto c1 = std::views::counted(it, 3);
     auto c2 = std::views::counted(std::as_const(it), 3);
     auto c3 = std::views::counted(std::move(it), 3);
-    auto c4 = std::views::counted(output_iterator<int*>(buffer), 3);
+    auto c4 = std::views::counted(cpp17_output_iterator<int*>(buffer), 3);
 
     using Expected = std::ranges::subrange<std::counted_iterator<decltype(it)>, std::default_sentinel_t>;
 

diff  --git a/libcxx/test/std/ranges/range.req/range.refinements/output_range.compile.pass.cpp b/libcxx/test/std/ranges/range.req/range.refinements/output_range.compile.pass.cpp
index 26bfac0e4c302..c56a907044bea 100644
--- a/libcxx/test/std/ranges/range.req/range.refinements/output_range.compile.pass.cpp
+++ b/libcxx/test/std/ranges/range.req/range.refinements/output_range.compile.pass.cpp
@@ -23,7 +23,7 @@ struct T { };
 
 // Satisfied when it's a range and has the right iterator
 struct GoodRange {
-    output_iterator<T*> begin();
+    cpp17_output_iterator<T*> begin();
     sentinel end();
 };
 static_assert(std::ranges::range<GoodRange>);
@@ -32,7 +32,7 @@ static_assert(std::ranges::output_range<GoodRange, T>);
 
 // Not satisfied when it's not a range
 struct NotRange {
-    output_iterator<T*> begin();
+    cpp17_output_iterator<T*> begin();
 };
 static_assert(!std::ranges::range<NotRange>);
 static_assert( std::output_iterator<std::ranges::iterator_t<NotRange>, T>);

diff  --git a/libcxx/test/std/re/re.alg/re.alg.replace/test1.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.replace/test1.pass.cpp
index 7e5332aaff872..ac7a1a58b2acb 100644
--- a/libcxx/test/std/re/re.alg/re.alg.replace/test1.pass.cpp
+++ b/libcxx/test/std/re/re.alg/re.alg.replace/test1.pass.cpp
@@ -29,7 +29,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
@@ -41,7 +41,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
@@ -54,7 +54,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
@@ -67,7 +67,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
@@ -80,7 +80,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
@@ -93,7 +93,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),

diff  --git a/libcxx/test/std/re/re.alg/re.alg.replace/test2.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.replace/test2.pass.cpp
index d5e3b64a3ebe9..2518b08d4245b 100644
--- a/libcxx/test/std/re/re.alg/re.alg.replace/test2.pass.cpp
+++ b/libcxx/test/std/re/re.alg/re.alg.replace/test2.pass.cpp
@@ -29,7 +29,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
@@ -41,7 +41,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
@@ -54,7 +54,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
@@ -67,7 +67,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
@@ -80,7 +80,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
@@ -93,7 +93,7 @@ int main(int, char**)
     {
         std::regex phone_numbers("\\d{3}-\\d{4}");
         const char phone_book[] = "555-1234, 555-2345, 555-3456";
-        typedef output_iterator<char*> Out;
+        typedef cpp17_output_iterator<char*> Out;
         typedef bidirectional_iterator<const char*> Bi;
         char buf[100] = {0};
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),

diff  --git a/libcxx/test/std/re/re.results/re.results.form/form1.pass.cpp b/libcxx/test/std/re/re.results/re.results.form/form1.pass.cpp
index 4bf888dbc8c1e..6f88854b68e6d 100644
--- a/libcxx/test/std/re/re.results/re.results.form/form1.pass.cpp
+++ b/libcxx/test/std/re/re.results/re.results.form/form1.pass.cpp
@@ -30,7 +30,7 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2";
-        char* r = m.format(output_iterator<char*>(out),
+        char* r = m.format(cpp17_output_iterator<char*>(out),
                     fmt, fmt + std::char_traits<char>::length(fmt)).base();
         assert(r == out + 58);
         assert(std::string(out) == "prefix: ab, match: cdefghi, suffix: jk, m[1]: efg, m[2]: e");
@@ -43,7 +43,7 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2";
-        char* r = m.format(output_iterator<char*>(out),
+        char* r = m.format(cpp17_output_iterator<char*>(out),
                     fmt, fmt + std::char_traits<char>::length(fmt)).base();
         assert(r == out + 54);
         assert(std::string(out) == "prefix: ab, match: cdefghi, suffix: jk, m[1]: , m[2]: ");
@@ -55,7 +55,7 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2";
-        char* r = m.format(output_iterator<char*>(out),
+        char* r = m.format(cpp17_output_iterator<char*>(out),
                     fmt, fmt + std::char_traits<char>::length(fmt)).base();
         assert(r == out + 54);
         assert(std::string(out) == "prefix: ab, match: cdefghi, suffix: jk, m[1]: , m[2]: ");
@@ -67,7 +67,7 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2";
-        char* r = m.format(output_iterator<char*>(out),
+        char* r = m.format(cpp17_output_iterator<char*>(out),
                     fmt, fmt + std::char_traits<char>::length(fmt),
                     std::regex_constants::format_sed).base();
         assert(r == out + 59);
@@ -80,7 +80,7 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "match: &, m[1]: \\1, m[2]: \\2";
-        char* r = m.format(output_iterator<char*>(out),
+        char* r = m.format(cpp17_output_iterator<char*>(out),
                     fmt, fmt + std::char_traits<char>::length(fmt),
                     std::regex_constants::format_sed).base();
         assert(r == out + 34);
@@ -94,7 +94,7 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "match: &, m[1]: \\1, m[2]: \\2";
-        char* r = m.format(output_iterator<char*>(out),
+        char* r = m.format(cpp17_output_iterator<char*>(out),
                     fmt, fmt + std::char_traits<char>::length(fmt),
                     std::regex_constants::format_sed).base();
         assert(r == out + 30);
@@ -107,7 +107,7 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "match: &, m[1]: \\1, m[2]: \\2";
-        char* r = m.format(output_iterator<char*>(out),
+        char* r = m.format(cpp17_output_iterator<char*>(out),
                     fmt, fmt + std::char_traits<char>::length(fmt),
                     std::regex_constants::format_sed).base();
         assert(r == out + 30);
@@ -122,7 +122,7 @@ int main(int, char**)
 
         wchar_t out[100] = {0};
         const wchar_t fmt[] = L"prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2";
-        wchar_t* r = m.format(output_iterator<wchar_t*>(out),
+        wchar_t* r = m.format(cpp17_output_iterator<wchar_t*>(out),
                     fmt, fmt + std::char_traits<wchar_t>::length(fmt)).base();
         assert(r == out + 58);
         assert(std::wstring(out) == L"prefix: ab, match: cdefghi, suffix: jk, m[1]: efg, m[2]: e");
@@ -134,7 +134,7 @@ int main(int, char**)
 
         wchar_t out[100] = {0};
         const wchar_t fmt[] = L"prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2";
-        wchar_t* r = m.format(output_iterator<wchar_t*>(out),
+        wchar_t* r = m.format(cpp17_output_iterator<wchar_t*>(out),
                     fmt, fmt + std::char_traits<wchar_t>::length(fmt),
                     std::regex_constants::format_sed).base();
         assert(r == out + 59);
@@ -147,7 +147,7 @@ int main(int, char**)
 
         wchar_t out[100] = {0};
         const wchar_t fmt[] = L"match: &, m[1]: \\1, m[2]: \\2";
-        wchar_t* r = m.format(output_iterator<wchar_t*>(out),
+        wchar_t* r = m.format(cpp17_output_iterator<wchar_t*>(out),
                     fmt, fmt + std::char_traits<wchar_t>::length(fmt),
                     std::regex_constants::format_sed).base();
         assert(r == out + 34);

diff  --git a/libcxx/test/std/re/re.results/re.results.form/form2.pass.cpp b/libcxx/test/std/re/re.results/re.results.form/form2.pass.cpp
index 91b7137706e5c..8517004ebb058 100644
--- a/libcxx/test/std/re/re.results/re.results.form/form2.pass.cpp
+++ b/libcxx/test/std/re/re.results/re.results.form/form2.pass.cpp
@@ -32,7 +32,7 @@ int main(int, char**)
 
         char out[100] = {0};
         nstr fmt("prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2");
-        char* r = m.format(output_iterator<char*>(out), fmt).base();
+        char* r = m.format(cpp17_output_iterator<char*>(out), fmt).base();
         assert(r == out + 58);
         assert(std::string(out) == "prefix: ab, match: cdefghi, suffix: jk, m[1]: efg, m[2]: e");
     }
@@ -43,7 +43,7 @@ int main(int, char**)
 
         char out[100] = {0};
         nstr fmt("prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2");
-        char* r = m.format(output_iterator<char*>(out),
+        char* r = m.format(cpp17_output_iterator<char*>(out),
                     fmt, std::regex_constants::format_sed).base();
         assert(r == out + 59);
         assert(std::string(out) == "prefix: $`, match: $cdefghi, suffix: $', m[1]: $1, m[2]: $2");
@@ -55,7 +55,7 @@ int main(int, char**)
 
         char out[100] = {0};
         nstr fmt("match: &, m[1]: \\1, m[2]: \\2");
-        char* r = m.format(output_iterator<char*>(out),
+        char* r = m.format(cpp17_output_iterator<char*>(out),
                     fmt, std::regex_constants::format_sed).base();
         assert(r == out + 34);
         assert(std::string(out) == "match: cdefghi, m[1]: efg, m[2]: e");
@@ -70,7 +70,7 @@ int main(int, char**)
 
         wchar_t out[100] = {0};
         wstr fmt(L"prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2");
-        wchar_t* r = m.format(output_iterator<wchar_t*>(out), fmt).base();
+        wchar_t* r = m.format(cpp17_output_iterator<wchar_t*>(out), fmt).base();
         assert(r == out + 58);
         assert(std::wstring(out) == L"prefix: ab, match: cdefghi, suffix: jk, m[1]: efg, m[2]: e");
     }
@@ -81,7 +81,7 @@ int main(int, char**)
 
         wchar_t out[100] = {0};
         wstr fmt(L"prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2");
-        wchar_t* r = m.format(output_iterator<wchar_t*>(out),
+        wchar_t* r = m.format(cpp17_output_iterator<wchar_t*>(out),
                     fmt, std::regex_constants::format_sed).base();
         assert(r == out + 59);
         assert(std::wstring(out) == L"prefix: $`, match: $cdefghi, suffix: $', m[1]: $1, m[2]: $2");
@@ -93,7 +93,7 @@ int main(int, char**)
 
         wchar_t out[100] = {0};
         wstr fmt(L"match: &, m[1]: \\1, m[2]: \\2");
-        wchar_t* r = m.format(output_iterator<wchar_t*>(out),
+        wchar_t* r = m.format(cpp17_output_iterator<wchar_t*>(out),
                     fmt, std::regex_constants::format_sed).base();
         assert(r == out + 34);
         assert(std::wstring(out) == L"match: cdefghi, m[1]: efg, m[2]: e");

diff  --git a/libcxx/test/support/test_iterators.h b/libcxx/test/support/test_iterators.h
index 60313a5889a52..66da5e7ba926a 100644
--- a/libcxx/test/support/test_iterators.h
+++ b/libcxx/test/support/test_iterators.h
@@ -17,12 +17,14 @@
 
 #include "test_macros.h"
 
+// This iterator meets C++20's Cpp17OutputIterator requirements, as described
+// in Table 90 ([output.iterators]).
 template <class It>
-class output_iterator
+class cpp17_output_iterator
 {
     It it_;
 
-    template <class U> friend class output_iterator;
+    template <class U> friend class cpp17_output_iterator;
 public:
     typedef          std::output_iterator_tag                  iterator_category;
     typedef void                                               value_type;
@@ -30,25 +32,28 @@ class output_iterator
     typedef It                                                 pointer;
     typedef typename std::iterator_traits<It>::reference       reference;
 
-    TEST_CONSTEXPR output_iterator() : it_() {}
-    TEST_CONSTEXPR explicit output_iterator(It it) : it_(std::move(it)) {}
+    TEST_CONSTEXPR cpp17_output_iterator() : it_() {}
+    TEST_CONSTEXPR explicit cpp17_output_iterator(It it) : it_(std::move(it)) {}
     template <class U>
-        TEST_CONSTEXPR output_iterator(const output_iterator<U>& u) : it_(u.it_) {}
+        TEST_CONSTEXPR cpp17_output_iterator(const cpp17_output_iterator<U>& u) :it_(u.it_) {}
 
     TEST_CONSTEXPR reference operator*() const {return *it_;}
 
-    TEST_CONSTEXPR_CXX14 output_iterator& operator++() {++it_; return *this;}
-    TEST_CONSTEXPR_CXX14 output_iterator operator++(int) {return output_iterator(it_++);}
+    TEST_CONSTEXPR_CXX14 cpp17_output_iterator& operator++() {++it_; return *this;}
+    TEST_CONSTEXPR_CXX14 cpp17_output_iterator operator++(int) {return cpp17_output_iterator(it_++);}
 
     TEST_CONSTEXPR It base() const {return it_;} // TODO remove me
-    friend TEST_CONSTEXPR It base(const output_iterator& i) { return i.it_; }
+    friend TEST_CONSTEXPR It base(const cpp17_output_iterator& i) { return i.it_; }
 
     template <class T>
     void operator,(T const &) = delete;
 };
+#ifndef _LIBCPP_HAS_NO_CONCEPTS
+   static_assert(std::output_iterator<cpp17_output_iterator<int*>, int>);
+#endif
 
-// This is the Cpp17InputIterator requirement as described in Table 87 ([input.iterators]),
-// formerly known as InputIterator prior to C++20.
+// This iterator meets C++20's Cpp17InputIterator requirements, as described
+// in Table 89 ([input.iterators]).
 template <class It, class ItTraits = It>
 class cpp17_input_iterator
 {
@@ -82,6 +87,9 @@ class cpp17_input_iterator
     template <class T>
     void operator,(T const &) = delete;
 };
+#ifndef _LIBCPP_HAS_NO_CONCEPTS
+   static_assert(std::input_iterator<cpp17_input_iterator<int*>>);
+#endif
 
 template <class It>
 class forward_iterator


        


More information about the libcxx-commits mailing list