[libcxx-commits] [libcxx] 5f26d86 - [libc++] Removes base member from tests.

Mark de Wever via libcxx-commits libcxx-commits at lists.llvm.org
Thu Mar 3 12:46:17 PST 2022


Author: Mark de Wever
Date: 2022-03-03T21:46:04+01:00
New Revision: 5f26d8636f506b487962cd2a9b0e32940e93fa9b

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

LOG: [libc++] Removes base member from tests.

Change the tests to use the base friend function instead of members.
Also changed some types to have a base friends instead of members.

Reviewed By: #libc, ldionne, Quuxplusone

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

Added: 
    

Modified: 
    libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
    libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.pass.cpp
    libcxx/test/std/iterators/predef.iterators/counted.iterator/assign.pass.cpp
    libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.iter.pass.cpp
    libcxx/test/std/iterators/predef.iterators/iterators.common/arrow.pass.cpp
    libcxx/test/std/iterators/predef.iterators/iterators.common/types.h
    libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp
    libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
    libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp
    libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp
    libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.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.hex.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.hex.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.numeric/locale.num.get/facet.num.get.members/get_bool.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_long.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_pointer.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_int.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long_long.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_short.pass.cpp
    libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/test_neg_one.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_many.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_one.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp
    libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_year.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/ranges/range.access/rbegin.pass.cpp
    libcxx/test/std/ranges/range.access/rend.pass.cpp
    libcxx/test/std/ranges/range.adaptors/range.all/range.ref.view/range.ref.view.pass.cpp
    libcxx/test/std/ranges/range.adaptors/range.common.view/end.pass.cpp
    libcxx/test/std/ranges/range.adaptors/range.drop/begin.pass.cpp
    libcxx/test/std/ranges/range.adaptors/range.drop/ctor.view.pass.cpp
    libcxx/test/std/ranges/range.adaptors/range.drop/types.h
    libcxx/test/std/ranges/range.adaptors/range.join.view/types.h
    libcxx/test/std/ranges/range.adaptors/range.reverse/adaptor.pass.cpp
    libcxx/test/std/ranges/range.adaptors/range.reverse/begin.pass.cpp
    libcxx/test/std/ranges/range.adaptors/range.reverse/end.pass.cpp
    libcxx/test/std/ranges/range.adaptors/range.transform/begin.pass.cpp
    libcxx/test/std/ranges/range.adaptors/range.transform/types.h
    libcxx/test/std/ranges/range.utility/range.subrange/advance.pass.cpp
    libcxx/test/std/ranges/range.utility/range.subrange/ctor.begin_end.pass.cpp
    libcxx/test/std/ranges/range.utility/range.subrange/ctor.pair_like_conv.pass.cpp
    libcxx/test/std/ranges/range.utility/range.subrange/ctor.range.pass.cpp
    libcxx/test/std/ranges/range.utility/range.subrange/primitives.pass.cpp
    libcxx/test/std/ranges/range.utility/range.subrange/types.h
    libcxx/test/std/ranges/range.utility/view.interface/view.interface.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/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 027abd2bc071a..05ab77907ea06 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
@@ -53,7 +53,7 @@ int main(int, char**)
         P p = std::partition_copy(cpp17_input_iterator<const int*>(std::begin(ia)),
                                   cpp17_input_iterator<const int*>(std::end(ia)),
                                   cpp17_output_iterator<int*>(r1), r2, is_odd());
-        assert(p.first.base() == r1 + 4);
+        assert(base(p.first) == r1 + 4);
         assert(r1[0] == 1);
         assert(r1[1] == 3);
         assert(r1[2] == 5);

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 bffd441812c2f..ed89a5ad47115 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
@@ -69,14 +69,14 @@ void test() {
   SampleIterator end = std::sample(PopulationIterator(ia),
                                    PopulationIterator(ia + is),
                                    SampleIterator(oa), os, g);
-  assert(static_cast<std::size_t>(end.base() - oa) == std::min(os, is));
+  assert(static_cast<std::size_t>(base(end) - oa) == std::min(os, is));
   // sample() is deterministic but non-reproducible;
   // its results can vary between implementations.
   LIBCPP_ASSERT(std::equal(oa, oa + os, oa1));
   end = std::sample(PopulationIterator(ia),
                                   PopulationIterator(ia + is),
                                   SampleIterator(oa), os, std::move(g));
-  assert(static_cast<std::size_t>(end.base() - oa) == std::min(os, is));
+  assert(static_cast<std::size_t>(base(end) - oa) == std::min(os, is));
   LIBCPP_ASSERT(std::equal(oa, oa + os, oa2));
 }
 
@@ -92,7 +92,7 @@ void test_empty_population() {
   SampleIterator end =
       std::sample(PopulationIterator(ia), PopulationIterator(ia),
                                 SampleIterator(oa), os, g);
-  assert(end.base() == oa);
+  assert(base(end) == oa);
 }
 
 template <template<class...> class PopulationIteratorType, class PopulationItem,
@@ -107,7 +107,7 @@ void test_empty_sample() {
   SampleIterator end =
       std::sample(PopulationIterator(ia), PopulationIterator(ia + is),
                                 SampleIterator(oa), 0, g);
-  assert(end.base() == oa);
+  assert(base(end) == oa);
 }
 
 template <template<class...> class PopulationIteratorType, class PopulationItem,
@@ -125,12 +125,12 @@ void test_small_population() {
   SampleIterator end = std::sample(PopulationIterator(ia),
                                    PopulationIterator(ia + is),
                                    SampleIterator(oa), os, g);
-  assert(static_cast<std::size_t>(end.base() - oa) == std::min(os, is));
+  assert(static_cast<std::size_t>(base(end) - oa) == std::min(os, is));
   typedef typename std::iterator_traits<PopulationIterator>::iterator_category PopulationCategory;
   if (std::is_base_of<std::forward_iterator_tag, PopulationCategory>::value) {
-    assert(std::equal(oa, end.base(), oa1));
+    assert(std::equal(oa, base(end), oa1));
   } else {
-    assert(std::is_permutation(oa, end.base(), oa1));
+    assert(std::is_permutation(oa, base(end), oa1));
   }
 }
 

diff  --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/assign.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/assign.pass.cpp
index 8c37db8f8594a..5ae1e6a5d328b 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/assign.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/assign.pass.cpp
@@ -29,14 +29,14 @@ class AssignableFromIter
     typedef int *                                                 pointer;
     typedef int &                                                 reference;
 
-    constexpr int *base() const {return it_;}
+    friend constexpr int *base(const AssignableFromIter& i) {return i.it_;}
 
     AssignableFromIter() = default;
     explicit constexpr AssignableFromIter(int *it) : it_(it) {}
-    constexpr AssignableFromIter(const forward_iterator<int*>& it) : it_(it.base()) {}
+    constexpr AssignableFromIter(const forward_iterator<int*>& it) : it_(base(it)) {}
 
     constexpr AssignableFromIter& operator=(const forward_iterator<int*> &other) {
-      it_ = other.base();
+      it_ = base(other);
       return *this;
     }
 
@@ -70,11 +70,11 @@ constexpr bool test() {
   {
     std::counted_iterator iter1(AssignableFromIter{buffer}, 8);
     std::counted_iterator iter2(forward_iterator<int*>{buffer + 2}, 6);
-    assert(iter1.base().base() == buffer);
+    assert(base(iter1.base()) == buffer);
     assert(iter1.count() == 8);
     std::counted_iterator<AssignableFromIter>& result = (iter1 = iter2);
     assert(&result == &iter1);
-    assert(iter1.base().base() == buffer + 2);
+    assert(base(iter1.base()) == buffer + 2);
     assert(iter1.count() == 6);
 
     ASSERT_SAME_TYPE(decltype(iter1 = iter2), std::counted_iterator<AssignableFromIter>&);
@@ -82,11 +82,11 @@ constexpr bool test() {
   {
     std::counted_iterator iter1(AssignableFromIter{buffer}, 8);
     const std::counted_iterator iter2(forward_iterator<int*>{buffer + 2}, 6);
-    assert(iter1.base().base() == buffer);
+    assert(base(iter1.base()) == buffer);
     assert(iter1.count() == 8);
     std::counted_iterator<AssignableFromIter>& result = (iter1 = iter2);
     assert(&result == &iter1);
-    assert(iter1.base().base() == buffer + 2);
+    assert(base(iter1.base()) == buffer + 2);
     assert(iter1.count() == 6);
 
     ASSERT_SAME_TYPE(decltype(iter1 = iter2), std::counted_iterator<AssignableFromIter>&);

diff  --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.iter.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.iter.pass.cpp
index 82d24cb020c05..55a0c44a446de 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.iter.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.iter.pass.cpp
@@ -35,7 +35,7 @@ constexpr bool test() {
 
   {
     std::counted_iterator iter(cpp20_input_iterator<int*>{buffer}, 8);
-    assert(iter.base().base() == buffer);
+    assert(base(iter.base()) == buffer);
     assert(iter.count() == 8);
   }
 
@@ -59,7 +59,7 @@ constexpr bool test() {
 
   {
     const std::counted_iterator iter(cpp20_input_iterator<int*>{buffer}, 8);
-    assert(iter.base().base() == buffer);
+    assert(base(iter.base()) == buffer);
     assert(iter.count() == 8);
   }
 

diff  --git a/libcxx/test/std/iterators/predef.iterators/iterators.common/arrow.pass.cpp b/libcxx/test/std/iterators/predef.iterators/iterators.common/arrow.pass.cpp
index 3d3954fbfafc3..f404f0278a550 100644
--- a/libcxx/test/std/iterators/predef.iterators/iterators.common/arrow.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/iterators.common/arrow.pass.cpp
@@ -57,8 +57,8 @@ void test() {
     auto commonIter1 = std::common_iterator<decltype(iter1), sentinel_type<int*>>(iter1);
     const auto commonIter2 = std::common_iterator<decltype(iter1), sentinel_type<int*>>(iter1);
 
-    assert(commonIter1.operator->().base() == buffer);
-    assert(commonIter2.operator->().base() == buffer);
+    assert(base(commonIter1.operator->()) == buffer);
+    assert(base(commonIter2.operator->()) == buffer);
   }
 
   // Case 1: http://eel.is/c++draft/iterators.common#common.iter.access-5.1
@@ -67,8 +67,8 @@ void test() {
     auto commonIter1 = std::common_iterator<decltype(iter1), sentinel_type<int*>>(iter1);
     const auto commonIter2 = std::common_iterator<decltype(iter1), sentinel_type<int*>>(iter1);
 
-    assert(commonIter1.operator->().base() == buffer);
-    assert(commonIter2.operator->().base() == buffer);
+    assert(base(commonIter1.operator->()) == buffer);
+    assert(base(commonIter2.operator->()) == buffer);
   }
 
   // Case 1: http://eel.is/c++draft/iterators.common#common.iter.access-5.1
@@ -77,8 +77,8 @@ void test() {
     auto commonIter1 = std::common_iterator<decltype(iter1), sentinel_type<int*>>(iter1);
     const auto commonIter2 = std::common_iterator<decltype(iter1), sentinel_type<int*>>(iter1);
 
-    assert(commonIter1.operator->().base() == buffer);
-    assert(commonIter2.operator->().base() == buffer);
+    assert(base(commonIter1.operator->()) == buffer);
+    assert(base(commonIter2.operator->()) == buffer);
   }
 }
 

diff  --git a/libcxx/test/std/iterators/predef.iterators/iterators.common/types.h b/libcxx/test/std/iterators/predef.iterators/iterators.common/types.h
index 76981c1e1a01e..c51b70520fda8 100644
--- a/libcxx/test/std/iterators/predef.iterators/iterators.common/types.h
+++ b/libcxx/test/std/iterators/predef.iterators/iterators.common/types.h
@@ -27,7 +27,7 @@ class simple_iterator
     typedef It                                                 pointer;
     typedef typename std::iterator_traits<It>::reference       reference;
 
-    constexpr It base() const {return it_;}
+    friend constexpr It base(const simple_iterator& i) {return i.it_;}
 
     simple_iterator() = default;
     explicit constexpr simple_iterator(It it) : it_(it) {}
@@ -51,7 +51,7 @@ class value_iterator
     typedef It                                                 pointer;
     typedef typename std::iterator_traits<It>::reference       reference;
 
-    constexpr It base() const {return it_;}
+    friend constexpr It base(const value_iterator& i) {return i.it_;}
 
     value_iterator() = default;
     explicit constexpr value_iterator(It it) : it_(it) {}
@@ -75,7 +75,7 @@ class void_plus_plus_iterator
     typedef It                                                 pointer;
     typedef typename std::iterator_traits<It>::reference       reference;
 
-    constexpr It base() const {return it_;}
+    friend constexpr It base(const void_plus_plus_iterator& i) {return i.it_;}
 
     void_plus_plus_iterator() = default;
     explicit constexpr void_plus_plus_iterator(It it) : it_(it) {}
@@ -108,7 +108,7 @@ class value_type_not_move_constructible_iterator
     typedef It                                                 pointer;
     typedef typename std::iterator_traits<It>::reference       reference;
 
-    constexpr It base() const {return it_;}
+    friend constexpr It base(const value_type_not_move_constructible_iterator& i) {return i.it_;}
 
     value_type_not_move_constructible_iterator() = default;
     explicit constexpr value_type_not_move_constructible_iterator(It it) : it_(it) {}
@@ -131,7 +131,7 @@ class comparable_iterator
     typedef It                                                 pointer;
     typedef typename std::iterator_traits<It>::reference       reference;
 
-    constexpr It base() const {return it_;}
+    friend constexpr It base(const comparable_iterator& i) {return i.it_;}
 
     comparable_iterator() = default;
     explicit constexpr comparable_iterator(It it) : it_(it) {}
@@ -143,42 +143,42 @@ class comparable_iterator
         {comparable_iterator tmp(*this); ++(*this); return tmp;}
 
     friend constexpr bool operator==(const comparable_iterator& lhs, const simple_iterator<It>& rhs) {
-      return lhs.base() == rhs.base();
+      return base(lhs) == base(rhs);
     }
     friend constexpr bool operator==(const simple_iterator<It>& lhs, const comparable_iterator& rhs) {
-      return lhs.base() == rhs.base();
+      return base(lhs) == base(rhs);
     }
 
     friend constexpr auto operator-(const comparable_iterator& lhs, const simple_iterator<It>& rhs) {
-      return lhs.base() - rhs.base();
+      return base(lhs) - base(rhs);
     }
     friend constexpr auto operator-(const simple_iterator<It>& lhs, const comparable_iterator& rhs) {
-      return lhs.base() - rhs.base();
+      return base(lhs) - base(rhs);
     }
 };
 
 template<class T>
 struct sentinel_type {
-  T base;
+  T base_;
 
   template<class U>
-  friend constexpr bool operator==(const sentinel_type& lhs, const U& rhs) { return lhs.base == rhs.base(); }
+  friend constexpr bool operator==(const sentinel_type& lhs, const U& rhs) { return lhs.base_ == base(rhs); }
   template<class U>
-  friend constexpr bool operator==(const U& lhs, const sentinel_type& rhs) { return lhs.base() == rhs.base; }
+  friend constexpr bool operator==(const U& lhs, const sentinel_type& rhs) { return base(lhs) == rhs.base_; }
 };
 
 template<class T>
 struct sized_sentinel_type {
-  T base;
+  T base_;
 
   template<class U>
-  friend constexpr bool operator==(const sized_sentinel_type& lhs, const U& rhs) { return lhs.base - rhs.base(); }
+  friend constexpr bool operator==(const sized_sentinel_type& lhs, const U& rhs) { return lhs.base_ - base(rhs); }
   template<class U>
-  friend constexpr bool operator==(const U& lhs, const sized_sentinel_type& rhs) { return lhs.base() - rhs.base; }
+  friend constexpr bool operator==(const U& lhs, const sized_sentinel_type& rhs) { return base(lhs) - rhs.base_; }
   template<class U>
-  friend constexpr auto operator- (const sized_sentinel_type& lhs, const U& rhs) { return lhs.base - rhs.base(); }
+  friend constexpr auto operator- (const sized_sentinel_type& lhs, const U& rhs) { return lhs.base_ - base(rhs); }
   template<class U>
-  friend constexpr auto operator- (const U& lhs, const sized_sentinel_type& rhs) { return lhs.base() - rhs.base; }
+  friend constexpr auto operator- (const U& lhs, const sized_sentinel_type& rhs) { return base(lhs) - rhs.base_; }
 };
 
 template <class It>
@@ -193,13 +193,13 @@ class assignable_iterator
     typedef It                                                 pointer;
     typedef typename std::iterator_traits<It>::reference       reference;
 
-    constexpr It base() const {return it_;}
+    friend constexpr It base(const assignable_iterator& i) {return i.it_;}
 
     assignable_iterator() = default;
     explicit constexpr assignable_iterator(It it) : it_(it) {}
 
-    assignable_iterator(const forward_iterator<It>& it) : it_(it.base()) {}
-    assignable_iterator(const sentinel_type<It>& it) : it_(it.base) {}
+    assignable_iterator(const forward_iterator<It>& it) : it_(base(it)) {}
+    assignable_iterator(const sentinel_type<It>& it) : it_(base(it)) {}
 
     constexpr reference operator*() const {return *it_;}
 
@@ -208,12 +208,12 @@ class assignable_iterator
         {assignable_iterator tmp(*this); ++(*this); return tmp;}
 
     assignable_iterator& operator=(const forward_iterator<It> &other) {
-      it_ = other.base();
+      it_ = base(other);
       return *this;
     }
 
     assignable_iterator& operator=(const sentinel_type<It> &other) {
-      it_ = other.base;
+      it_ = base(other);
       return *this;
     }
 };
@@ -221,12 +221,12 @@ class assignable_iterator
 #ifndef TEST_HAS_NO_EXCEPTIONS
 template<class T>
 struct sentinel_throws_on_convert {
-  T base;
+  T base_;
 
   template<class U>
-  friend constexpr bool operator==(const sentinel_throws_on_convert& lhs, const U& rhs) { return lhs.base == rhs.base(); }
+  friend constexpr bool operator==(const sentinel_throws_on_convert& lhs, const U& rhs) { return lhs.base_ == base(rhs); }
   template<class U>
-  friend constexpr bool operator==(const U& lhs, const sentinel_throws_on_convert& rhs) { return lhs.base() == rhs.base; }
+  friend constexpr bool operator==(const U& lhs, const sentinel_throws_on_convert& rhs) { return base(lhs) == rhs.base_; }
 
   operator sentinel_type<int*>() const { throw 42; }
 };
@@ -243,12 +243,12 @@ class maybe_valueless_iterator
     typedef It                                                 pointer;
     typedef typename std::iterator_traits<It>::reference       reference;
 
-    constexpr It base() const {return it_;}
+    friend constexpr It base(const maybe_valueless_iterator& i) {return i.it_;}
 
     maybe_valueless_iterator() = default;
     explicit constexpr maybe_valueless_iterator(It it) : it_(it) {}
 
-    maybe_valueless_iterator(const forward_iterator<It>& it) : it_(it.base()) {}
+    maybe_valueless_iterator(const forward_iterator<It>& it) : it_(base(it)) {}
 
     constexpr reference operator*() const {return *it_;}
 
@@ -257,7 +257,7 @@ class maybe_valueless_iterator
         {maybe_valueless_iterator tmp(*this); ++(*this); return tmp;}
 
     maybe_valueless_iterator& operator=(const forward_iterator<It> &other) {
-      it_ = other.base();
+      it_ = base(other);
       return *this;
     }
 };

diff  --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp
index f8e423ce15198..8881aa8813a82 100644
--- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp
@@ -71,7 +71,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -82,7 +82,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -93,7 +93,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -104,7 +104,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -115,7 +115,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -126,7 +126,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -138,7 +138,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -150,7 +150,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -162,7 +162,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -174,7 +174,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -186,7 +186,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -199,7 +199,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -212,7 +212,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -223,7 +223,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
         }
     }
@@ -237,7 +237,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -248,7 +248,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -259,7 +259,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -270,7 +270,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -281,7 +281,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -292,7 +292,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -304,7 +304,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -316,7 +316,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -328,7 +328,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -340,7 +340,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -352,7 +352,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -365,7 +365,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -378,7 +378,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -389,7 +389,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
         }
     }
@@ -404,7 +404,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -415,7 +415,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -426,7 +426,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -437,7 +437,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -448,7 +448,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -459,7 +459,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -471,7 +471,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -483,7 +483,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -495,7 +495,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -507,7 +507,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -519,7 +519,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -532,7 +532,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -545,7 +545,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -556,7 +556,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
         }
     }
@@ -570,7 +570,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -581,7 +581,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -592,7 +592,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -603,7 +603,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -614,7 +614,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -625,7 +625,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -637,7 +637,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -649,7 +649,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -661,7 +661,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -673,7 +673,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -685,7 +685,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -698,7 +698,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -711,7 +711,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -722,7 +722,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
         }
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
index ffc57e6236d8f..3effa80e7d6f7 100644
--- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
@@ -82,7 +82,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -93,7 +93,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -104,7 +104,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -115,7 +115,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -126,7 +126,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -138,7 +138,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -150,7 +150,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -161,7 +161,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -173,7 +173,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -184,7 +184,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -196,7 +196,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -209,7 +209,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -222,7 +222,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 13);
+            assert(base(iter) == v.data() + 13);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -233,7 +233,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 13);
+            assert(base(iter) == v.data() + 13);
             assert(err == std::ios_base::goodbit);
             assert(ex == 123456789);
         }
@@ -249,7 +249,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -260,7 +260,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -271,7 +271,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -282,7 +282,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -293,7 +293,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -305,7 +305,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -317,7 +317,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -328,7 +328,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -340,7 +340,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -351,7 +351,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -363,7 +363,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -376,7 +376,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -389,7 +389,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 14);
+            assert(base(iter) == v.data() + 14);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -400,7 +400,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 13);
+            assert(base(iter) == v.data() + 13);
             assert(err == std::ios_base::goodbit);
             assert(ex == 123456789);
         }
@@ -416,7 +416,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -427,7 +427,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -438,7 +438,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -449,7 +449,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -460,7 +460,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -472,7 +472,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -484,7 +484,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -495,7 +495,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -507,7 +507,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -518,7 +518,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -530,7 +530,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -543,7 +543,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -556,7 +556,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 13);
+            assert(base(iter) == v.data() + 13);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -567,7 +567,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 13);
+            assert(base(iter) == v.data() + 13);
             assert(err == std::ios_base::goodbit);
             assert(ex == 123456789);
         }
@@ -582,7 +582,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -593,7 +593,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -604,7 +604,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -615,7 +615,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -626,7 +626,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -638,7 +638,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -650,7 +650,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -661,7 +661,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -673,7 +673,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -684,7 +684,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -696,7 +696,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -709,7 +709,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -722,7 +722,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 14);
+            assert(base(iter) == v.data() + 14);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -733,7 +733,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 13);
+            assert(base(iter) == v.data() + 13);
             assert(err == std::ios_base::goodbit);
             assert(ex == 123456789);
         }

diff  --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp
index a72d0c4d210ee..d9c916e47b77a 100644
--- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp
@@ -79,7 +79,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -90,7 +90,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -101,7 +101,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -112,7 +112,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -123,7 +123,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -134,7 +134,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 5);
+            assert(base(iter) == v.data() + 5);
             assert(err == std::ios_base::goodbit);
             assert(ex == 0);
         }
@@ -146,7 +146,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -158,7 +158,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 6);
+            assert(base(iter) == v.data() + 6);
             assert(err == std::ios_base::goodbit);
             assert(ex == -1);
         }
@@ -170,7 +170,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -182,7 +182,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 13);
+            assert(base(iter) == v.data() + 13);
             assert(err == std::ios_base::goodbit);
             assert(ex == 123456789);
         }
@@ -194,7 +194,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -207,7 +207,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -220,7 +220,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 14);
+            assert(base(iter) == v.data() + 14);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -231,7 +231,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 14);
+            assert(base(iter) == v.data() + 14);
             assert(err == std::ios_base::goodbit);
             assert(ex == -123456789);
         }
@@ -246,7 +246,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -257,7 +257,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -268,7 +268,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -279,7 +279,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -290,7 +290,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -301,7 +301,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 5);
+            assert(base(iter) == v.data() + 5);
             assert(err == std::ios_base::goodbit);
             assert(ex == 0);
         }
@@ -313,7 +313,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -325,7 +325,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 6);
+            assert(base(iter) == v.data() + 6);
             assert(err == std::ios_base::goodbit);
             assert(ex == -1);
         }
@@ -337,7 +337,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -349,7 +349,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 13);
+            assert(base(iter) == v.data() + 13);
             assert(err == std::ios_base::goodbit);
             assert(ex == 123456789);
         }
@@ -361,7 +361,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -374,7 +374,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -387,7 +387,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 14);
+            assert(base(iter) == v.data() + 14);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -398,7 +398,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 14);
+            assert(base(iter) == v.data() + 14);
             assert(err == std::ios_base::goodbit);
             assert(ex == -123456789);
         }
@@ -415,7 +415,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -426,7 +426,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -437,7 +437,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -448,7 +448,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -459,7 +459,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -470,7 +470,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 5);
+            assert(base(iter) == v.data() + 5);
             assert(err == std::ios_base::goodbit);
             assert(ex == 0);
         }
@@ -482,7 +482,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -494,7 +494,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 6);
+            assert(base(iter) == v.data() + 6);
             assert(err == std::ios_base::goodbit);
             assert(ex == -1);
         }
@@ -506,7 +506,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -518,7 +518,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 13);
+            assert(base(iter) == v.data() + 13);
             assert(err == std::ios_base::goodbit);
             assert(ex == 123456789);
         }
@@ -530,7 +530,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -543,7 +543,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -556,7 +556,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 14);
+            assert(base(iter) == v.data() + 14);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -567,7 +567,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 14);
+            assert(base(iter) == v.data() + 14);
             assert(err == std::ios_base::goodbit);
             assert(ex == -123456789);
         }
@@ -582,7 +582,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -593,7 +593,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -604,7 +604,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -615,7 +615,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -626,7 +626,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -637,7 +637,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 5);
+            assert(base(iter) == v.data() + 5);
             assert(err == std::ios_base::goodbit);
             assert(ex == 0);
         }
@@ -649,7 +649,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -661,7 +661,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 6);
+            assert(base(iter) == v.data() + 6);
             assert(err == std::ios_base::goodbit);
             assert(ex == -1);
         }
@@ -673,7 +673,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -685,7 +685,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 13);
+            assert(base(iter) == v.data() + 13);
             assert(err == std::ios_base::goodbit);
             assert(ex == 123456789);
         }
@@ -697,7 +697,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -710,7 +710,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -723,7 +723,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 14);
+            assert(base(iter) == v.data() + 14);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -734,7 +734,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 14);
+            assert(base(iter) == v.data() + 14);
             assert(err == std::ios_base::goodbit);
             assert(ex == -123456789);
         }

diff  --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp
index 640835f6f3595..fef7b3ec9b9fb 100644
--- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp
@@ -79,7 +79,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -90,7 +90,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -101,7 +101,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -112,7 +112,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -123,7 +123,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -134,7 +134,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -146,7 +146,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -158,7 +158,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -170,7 +170,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -182,7 +182,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -194,7 +194,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -207,7 +207,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -220,7 +220,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 0);
+            assert(base(iter) == v.data() + 0);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -231,7 +231,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 0);
+            assert(base(iter) == v.data() + 0);
             assert(err == std::ios_base::failbit);
         }
     }
@@ -245,7 +245,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -256,7 +256,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -267,7 +267,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -278,7 +278,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -289,7 +289,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -300,7 +300,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -312,7 +312,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -324,7 +324,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -336,7 +336,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -348,7 +348,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -360,7 +360,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -373,7 +373,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -386,7 +386,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 0);
+            assert(base(iter) == v.data() + 0);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -397,7 +397,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 0);
+            assert(base(iter) == v.data() + 0);
             assert(err == std::ios_base::failbit);
         }
     }
@@ -412,7 +412,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -423,7 +423,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -434,7 +434,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -445,7 +445,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -456,7 +456,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -467,7 +467,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -479,7 +479,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -491,7 +491,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -503,7 +503,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -515,7 +515,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -527,7 +527,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -540,7 +540,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -553,7 +553,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 0);
+            assert(base(iter) == v.data() + 0);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -564,7 +564,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 0);
+            assert(base(iter) == v.data() + 0);
             assert(err == std::ios_base::failbit);
         }
     }
@@ -578,7 +578,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -589,7 +589,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -600,7 +600,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -611,7 +611,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -622,7 +622,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
         }
@@ -633,7 +633,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
         }
@@ -645,7 +645,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 0);
             std::noshowbase(ios);
@@ -657,7 +657,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
         }
@@ -669,7 +669,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -1);
             std::noshowbase(ios);
@@ -681,7 +681,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
         }
@@ -693,7 +693,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == 123456789);
             std::noshowbase(ios);
@@ -706,7 +706,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == -123456789);
             std::noshowbase(ios);
@@ -719,7 +719,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 0);
+            assert(base(iter) == v.data() + 0);
             assert(err == std::ios_base::failbit);
             std::noshowbase(ios);
         }
@@ -730,7 +730,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 0);
+            assert(base(iter) == v.data() + 0);
             assert(err == std::ios_base::failbit);
         }
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp
index e8f9f282fe8d0..ecb88801ca473 100644
--- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp
@@ -71,7 +71,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "0");
         }
@@ -82,7 +82,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-1");
         }
@@ -93,7 +93,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "123456789");
         }
@@ -104,7 +104,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-123456789");
         }
@@ -115,7 +115,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-123456789");
         }
@@ -126,7 +126,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "0");
         }
@@ -138,7 +138,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "0");
             std::noshowbase(ios);
@@ -150,7 +150,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-1");
         }
@@ -162,7 +162,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-1");
             std::noshowbase(ios);
@@ -174,7 +174,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "123456789");
         }
@@ -186,7 +186,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "123456789");
             std::noshowbase(ios);
@@ -199,7 +199,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-123456789");
             std::noshowbase(ios);
@@ -212,7 +212,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             assert(ex == "");
             std::noshowbase(ios);
@@ -224,7 +224,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             assert(ex == "");
         }
@@ -239,7 +239,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "0");
         }
@@ -250,7 +250,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-1");
         }
@@ -261,7 +261,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "123456789");
         }
@@ -272,7 +272,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-123456789");
         }
@@ -283,7 +283,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-123456789");
         }
@@ -294,7 +294,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "0");
         }
@@ -306,7 +306,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "0");
             std::noshowbase(ios);
@@ -318,7 +318,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-1");
         }
@@ -330,7 +330,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-1");
             std::noshowbase(ios);
@@ -342,7 +342,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "123456789");
         }
@@ -354,7 +354,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "123456789");
             std::noshowbase(ios);
@@ -367,7 +367,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == "-123456789");
             std::noshowbase(ios);
@@ -380,7 +380,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             assert(ex == "");
             std::noshowbase(ios);
@@ -392,7 +392,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             assert(ex == "");
         }
@@ -408,7 +408,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"0");
         }
@@ -419,7 +419,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-1");
         }
@@ -430,7 +430,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"123456789");
         }
@@ -441,7 +441,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-123456789");
         }
@@ -452,7 +452,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-123456789");
         }
@@ -463,7 +463,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"0");
         }
@@ -475,7 +475,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"0");
             std::noshowbase(ios);
@@ -487,7 +487,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-1");
         }
@@ -499,7 +499,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-1");
             std::noshowbase(ios);
@@ -511,7 +511,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"123456789");
         }
@@ -523,7 +523,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"123456789");
             std::noshowbase(ios);
@@ -536,7 +536,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-123456789");
             std::noshowbase(ios);
@@ -549,7 +549,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             assert(ex == L"");
             std::noshowbase(ios);
@@ -561,7 +561,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 false, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             assert(ex == L"");
         }
@@ -576,7 +576,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"0");
         }
@@ -587,7 +587,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-1");
         }
@@ -598,7 +598,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"123456789");
         }
@@ -609,7 +609,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-123456789");
         }
@@ -620,7 +620,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-123456789");
         }
@@ -631,7 +631,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"0");
         }
@@ -643,7 +643,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"0");
             std::noshowbase(ios);
@@ -655,7 +655,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-1");
         }
@@ -667,7 +667,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-1");
             std::noshowbase(ios);
@@ -679,7 +679,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"123456789");
         }
@@ -691,7 +691,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"123456789");
             std::noshowbase(ios);
@@ -704,7 +704,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + v.size());
+            assert(base(iter) == v.data() + v.size());
             assert(err == std::ios_base::eofbit);
             assert(ex == L"-123456789");
             std::noshowbase(ios);
@@ -717,7 +717,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             assert(ex == L"");
             std::noshowbase(ios);
@@ -729,7 +729,7 @@ int main(int, char**)
             std::ios_base::iostate err = std::ios_base::goodbit;
             I iter = f.get(I(v.data()), I(v.data() + v.size()),
                                                 true, ios, err, ex);
-            assert(iter.base() == v.data() + 1);
+            assert(base(iter) == v.data() + 1);
             assert(err == std::ios_base::failbit);
             assert(ex == L"");
         }

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 d229f5a676efa..7092c236eb204 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
@@ -67,14 +67,14 @@ int main(int, char**)
         long double v = 0;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0.00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "(0.01)");
 #else
@@ -85,14 +85,14 @@ int main(int, char**)
         long double v = 123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "(1,234,567.89)");
 #else
@@ -104,7 +104,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "$0.00");
     }
     {   // negative one, showbase
@@ -112,7 +112,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "($0.01)");
 #else
@@ -124,7 +124,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "$1,234,567.89");
     }
     {   // negative, showbase
@@ -132,7 +132,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "($1,234,567.89)");
 #else
@@ -146,7 +146,7 @@ int main(int, char**)
         std::left(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "($1,234,567.89)     ");
 #else
@@ -161,7 +161,7 @@ int main(int, char**)
         std::internal(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "($     1,234,567.89)");
 #else
@@ -176,7 +176,7 @@ int main(int, char**)
         std::right(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "     ($1,234,567.89)");
 #else
@@ -192,14 +192,14 @@ int main(int, char**)
         long double v = 0;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0.00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "(0.01)");
 #else
@@ -210,14 +210,14 @@ int main(int, char**)
         long double v = 123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "(1,234,567.89)");
 #else
@@ -229,7 +229,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "USD0.00");
 #else
@@ -241,7 +241,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "(USD0.01)");
 #else
@@ -253,7 +253,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "USD1,234,567.89");
 #else
@@ -265,7 +265,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "(USD1,234,567.89)");
 #else
@@ -279,7 +279,7 @@ int main(int, char**)
         std::left(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "(USD1,234,567.89)   ");
 #else
@@ -294,7 +294,7 @@ int main(int, char**)
         std::internal(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "(USD   1,234,567.89)");
 #else
@@ -309,7 +309,7 @@ int main(int, char**)
         std::right(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == "   (USD1,234,567.89)");
 #else
@@ -328,14 +328,14 @@ int main(int, char**)
         long double v = 0;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0.00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"(0.01)");
 #else
@@ -346,14 +346,14 @@ int main(int, char**)
         long double v = 123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"(1,234,567.89)");
 #else
@@ -365,7 +365,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"$0.00");
     }
     {   // negative one, showbase
@@ -373,7 +373,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"($0.01)");
 #else
@@ -385,7 +385,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"$1,234,567.89");
     }
     {   // negative, showbase
@@ -393,7 +393,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"($1,234,567.89)");
 #else
@@ -407,7 +407,7 @@ int main(int, char**)
         std::left(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"($1,234,567.89)     ");
 #else
@@ -422,7 +422,7 @@ int main(int, char**)
         std::internal(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"($     1,234,567.89)");
 #else
@@ -437,7 +437,7 @@ int main(int, char**)
         std::right(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"     ($1,234,567.89)");
 #else
@@ -453,14 +453,14 @@ int main(int, char**)
         long double v = 0;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0.00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"(0.01)");
 #else
@@ -471,14 +471,14 @@ int main(int, char**)
         long double v = 123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"(1,234,567.89)");
 #else
@@ -490,7 +490,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"USD0.00");
 #else
@@ -502,7 +502,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"(USD0.01)");
 #else
@@ -514,7 +514,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"USD1,234,567.89");
 #else
@@ -526,7 +526,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"(USD1,234,567.89)");
 #else
@@ -540,7 +540,7 @@ int main(int, char**)
         std::left(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"(USD1,234,567.89)   ");
 #else
@@ -555,7 +555,7 @@ int main(int, char**)
         std::internal(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"(USD   1,234,567.89)");
 #else
@@ -570,7 +570,7 @@ int main(int, char**)
         std::right(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #if defined(_WIN32)
         assert(ex == L"   (USD1,234,567.89)");
 #else

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 79241674d935e..05b4ee474944a 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
@@ -79,28 +79,28 @@ int main(int, char**)
         long double v = 0;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0,00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-0,01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1 234 567,89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89");
     }
     {   // zero, showbase
@@ -108,7 +108,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0,00 \u20ac");
     }
     {   // negative one, showbase
@@ -116,7 +116,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-0,01 \u20ac");
     }
     {   // positive, showbase
@@ -124,7 +124,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1 234 567,89 \u20ac");
     }
     {   // negative, showbase
@@ -132,7 +132,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89 \u20ac");
     }
     {   // negative, showbase, left
@@ -142,7 +142,7 @@ int main(int, char**)
         std::left(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89 \u20ac   ");
         assert(ios.width() == 0);
     }
@@ -153,7 +153,7 @@ int main(int, char**)
         std::internal(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89    \u20ac");
         assert(ios.width() == 0);
     }
@@ -164,7 +164,7 @@ int main(int, char**)
         std::right(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "   -1 234 567,89 \u20ac");
         assert(ios.width() == 0);
     }
@@ -176,28 +176,28 @@ int main(int, char**)
         long double v = 0;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0,00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-0,01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1 234 567,89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89");
     }
     {   // zero, showbase
@@ -205,7 +205,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0,00 EUR");
     }
     {   // negative one, showbase
@@ -213,7 +213,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-0,01 EUR");
     }
     {   // positive, showbase
@@ -221,7 +221,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1 234 567,89 EUR");
     }
     {   // negative, showbase
@@ -229,7 +229,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89 EUR");
     }
     {   // negative, showbase, left
@@ -239,7 +239,7 @@ int main(int, char**)
         std::left(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89 EUR   ");
         assert(ios.width() == 0);
     }
@@ -250,7 +250,7 @@ int main(int, char**)
         std::internal(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89    EUR");
         assert(ios.width() == 0);
     }
@@ -261,7 +261,7 @@ int main(int, char**)
         std::right(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "   -1 234 567,89 EUR");
         assert(ios.width() == 0);
     }
@@ -276,28 +276,28 @@ int main(int, char**)
         long double v = 0;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0,00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-0,01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"1 234 567,89"));
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89"));
     }
     {   // zero, showbase
@@ -305,7 +305,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0,00 \u20ac");
     }
     {   // negative one, showbase
@@ -313,7 +313,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-0,01 \u20ac");
     }
     {   // positive, showbase
@@ -321,7 +321,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"1 234 567,89 \u20ac"));
     }
     {   // negative, showbase
@@ -329,7 +329,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89 \u20ac"));
     }
     {   // negative, showbase, left
@@ -339,7 +339,7 @@ int main(int, char**)
         std::left(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89 \u20ac     "));
         assert(ios.width() == 0);
     }
@@ -350,7 +350,7 @@ int main(int, char**)
         std::internal(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89      \u20ac"));
         assert(ios.width() == 0);
     }
@@ -361,7 +361,7 @@ int main(int, char**)
         std::right(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"     -1 234 567,89 \u20ac"));
         assert(ios.width() == 0);
     }
@@ -373,28 +373,28 @@ int main(int, char**)
         long double v = 0;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0,00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-0,01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"1 234 567,89"));
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89"));
     }
     {   // zero, showbase
@@ -402,7 +402,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0,00 EUR");
     }
     {   // negative one, showbase
@@ -410,7 +410,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-0,01 EUR");
     }
     {   // positive, showbase
@@ -418,7 +418,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"1 234 567,89 EUR"));
     }
     {   // negative, showbase
@@ -426,7 +426,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89 EUR"));
     }
     {   // negative, showbase, left
@@ -436,7 +436,7 @@ int main(int, char**)
         std::left(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89 EUR   "));
         assert(ios.width() == 0);
     }
@@ -447,7 +447,7 @@ int main(int, char**)
         std::internal(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89    EUR"));
         assert(ios.width() == 0);
     }
@@ -458,7 +458,7 @@ int main(int, char**)
         std::right(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         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 b980df12a18a1..ae5071907aca4 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
@@ -76,28 +76,28 @@ int main(int, char**)
         long double v = 0;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0,00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-0,01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1 234 567,89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89");
     }
     {   // zero, showbase
@@ -105,7 +105,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0,00 " + symbol);
     }
     {   // negative one, showbase
@@ -113,7 +113,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-0,01 " + symbol);
     }
     {   // positive, showbase
@@ -121,7 +121,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1 234 567,89 " + symbol);
     }
     {   // negative, showbase
@@ -129,7 +129,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89 " + symbol);
     }
     {   // negative, showbase, left
@@ -139,7 +139,7 @@ int main(int, char**)
         std::left(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89 " + symbol);
         assert(ios.width() == 0);
     }
@@ -150,7 +150,7 @@ int main(int, char**)
         std::internal(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89 " + symbol);
         assert(ios.width() == 0);
     }
@@ -161,7 +161,7 @@ int main(int, char**)
         std::right(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89 " + symbol);
         assert(ios.width() == 0);
     }
@@ -173,28 +173,28 @@ int main(int, char**)
         long double v = 0;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0,00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-0,01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1 234 567,89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89");
     }
     {   // zero, showbase
@@ -202,7 +202,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0,00 RUB");
     }
     {   // negative one, showbase
@@ -210,7 +210,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-0,01 RUB");
     }
     {   // positive, showbase
@@ -218,7 +218,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1 234 567,89 RUB");
     }
     {   // negative, showbase
@@ -226,7 +226,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89 RUB");
     }
     {   // negative, showbase, left
@@ -236,7 +236,7 @@ int main(int, char**)
         std::left(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89 RUB   ");
         assert(ios.width() == 0);
     }
@@ -247,7 +247,7 @@ int main(int, char**)
         std::internal(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1 234 567,89    RUB");
         assert(ios.width() == 0);
     }
@@ -258,7 +258,7 @@ int main(int, char**)
         std::right(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "   -1 234 567,89 RUB");
         assert(ios.width() == 0);
     }
@@ -274,28 +274,28 @@ int main(int, char**)
         long double v = 0;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0,00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-0,01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"1 234 567,89"));
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89"));
     }
     {   // zero, showbase
@@ -303,7 +303,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0,00 " + symbol);
     }
     {   // negative one, showbase
@@ -311,7 +311,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-0,01 " + symbol);
     }
     {   // positive, showbase
@@ -319,7 +319,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"1 234 567,89 ") + symbol);
     }
     {   // negative, showbase
@@ -327,7 +327,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89 ") + symbol);
     }
     {   // negative, showbase, left
@@ -337,7 +337,7 @@ int main(int, char**)
         std::left(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89 ") + symbol);
         assert(ios.width() == 0);
     }
@@ -348,7 +348,7 @@ int main(int, char**)
         std::internal(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89 ") + symbol);
         assert(ios.width() == 0);
     }
@@ -359,7 +359,7 @@ int main(int, char**)
         std::right(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89 ") + symbol);
         assert(ios.width() == 0);
     }
@@ -371,28 +371,28 @@ int main(int, char**)
         long double v = 0;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0,00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-0,01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"1 234 567,89"));
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89"));
     }
     {   // zero, showbase
@@ -400,7 +400,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0,00 RUB");
     }
     {   // negative one, showbase
@@ -408,7 +408,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-0,01 RUB");
     }
     {   // positive, showbase
@@ -416,7 +416,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"1 234 567,89 RUB"));
     }
     {   // negative, showbase
@@ -424,7 +424,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89 RUB"));
     }
     {   // negative, showbase, left
@@ -434,7 +434,7 @@ int main(int, char**)
         std::left(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89 RUB   "));
         assert(ios.width() == 0);
     }
@@ -445,7 +445,7 @@ int main(int, char**)
         std::internal(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(L"-1 234 567,89    RUB"));
         assert(ios.width() == 0);
     }
@@ -456,7 +456,7 @@ int main(int, char**)
         std::right(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == convert_thousands_sep(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 b6817553d9e60..a3a23288715f3 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
@@ -76,28 +76,28 @@ int main(int, char**)
         long double v = 0;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0.00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-0.01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1,234,567.89");
     }
     {   // zero, showbase
@@ -105,7 +105,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "\xEF\xBF\xA5""0.00");
     }
     {   // negative one, showbase
@@ -113,7 +113,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "\xEF\xBF\xA5""-0.01");
     }
     {   // positive, showbase
@@ -121,7 +121,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "\xEF\xBF\xA5""1,234,567.89");
     }
     {   // negative, showbase
@@ -129,7 +129,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "\xEF\xBF\xA5""-1,234,567.89");
     }
     {   // negative, showbase, left
@@ -139,7 +139,7 @@ int main(int, char**)
         std::left(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "\xEF\xBF\xA5""-1,234,567.89    ");
         assert(ios.width() == 0);
     }
@@ -150,7 +150,7 @@ int main(int, char**)
         std::internal(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "\xEF\xBF\xA5""-    1,234,567.89");
         assert(ios.width() == 0);
     }
@@ -161,7 +161,7 @@ int main(int, char**)
         std::right(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "    \xEF\xBF\xA5""-1,234,567.89");
         assert(ios.width() == 0);
     }
@@ -173,28 +173,28 @@ int main(int, char**)
         long double v = 0;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0.00");
     }
     {   // negative one
         long double v = -1;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-0.01");
     }
     {   // positive
         long double v = 123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1,234,567.89");
     }
     {   // zero, showbase
@@ -202,7 +202,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "CNY 0.00");
     }
     {   // negative one, showbase
@@ -210,7 +210,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "CNY -0.01");
     }
     {   // positive, showbase
@@ -218,7 +218,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "CNY 1,234,567.89");
     }
     {   // negative, showbase
@@ -226,7 +226,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "CNY -1,234,567.89");
     }
     {   // negative, showbase, left
@@ -236,7 +236,7 @@ int main(int, char**)
         std::left(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "CNY -1,234,567.89   ");
         assert(ios.width() == 0);
     }
@@ -247,7 +247,7 @@ int main(int, char**)
         std::internal(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "CNY -   1,234,567.89");
         assert(ios.width() == 0);
     }
@@ -258,7 +258,7 @@ int main(int, char**)
         std::right(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "   CNY -1,234,567.89");
         assert(ios.width() == 0);
     }
@@ -273,28 +273,28 @@ int main(int, char**)
         long double v = 0;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0.00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-0.01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-1,234,567.89");
     }
     {   // zero, showbase
@@ -302,7 +302,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"\xFFE5""0.00");
     }
     {   // negative one, showbase
@@ -310,7 +310,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"\xFFE5""-0.01");
     }
     {   // positive, showbase
@@ -318,7 +318,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"\xFFE5""1,234,567.89");
     }
     {   // negative, showbase
@@ -326,7 +326,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"\xFFE5""-1,234,567.89");
     }
     {   // negative, showbase, left
@@ -336,7 +336,7 @@ int main(int, char**)
         std::left(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"\xFFE5""-1,234,567.89      ");
         assert(ios.width() == 0);
     }
@@ -347,7 +347,7 @@ int main(int, char**)
         std::internal(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"\xFFE5""-      1,234,567.89");
         assert(ios.width() == 0);
     }
@@ -358,7 +358,7 @@ int main(int, char**)
         std::right(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"      \xFFE5""-1,234,567.89");
         assert(ios.width() == 0);
     }
@@ -370,28 +370,28 @@ int main(int, char**)
         long double v = 0;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0.00");
     }
     {   // negative one
         long double v = -1;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-0.01");
     }
     {   // positive
         long double v = 123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         long double v = -123456789;
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"-1,234,567.89");
     }
     {   // zero, showbase
@@ -399,7 +399,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"CNY 0.00");
     }
     {   // negative one, showbase
@@ -407,7 +407,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"CNY -0.01");
     }
     {   // positive, showbase
@@ -415,7 +415,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"CNY 1,234,567.89");
     }
     {   // negative, showbase
@@ -423,7 +423,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"CNY -1,234,567.89");
     }
     {   // negative, showbase, left
@@ -433,7 +433,7 @@ int main(int, char**)
         std::left(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"CNY -1,234,567.89   ");
         assert(ios.width() == 0);
     }
@@ -444,7 +444,7 @@ int main(int, char**)
         std::internal(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"CNY -   1,234,567.89");
         assert(ios.width() == 0);
     }
@@ -455,7 +455,7 @@ int main(int, char**)
         std::right(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         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 5790a68f86500..bb7047a16216d 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
@@ -67,14 +67,14 @@ int main(int, char**)
         std::string v = "0";
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0.00");
     }
     {   // negative one
         std::string v = "-1";
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "(0.01)");
 #else
@@ -85,14 +85,14 @@ int main(int, char**)
         std::string v = "123456789";
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1,234,567.89");
     }
     {   // negative
         std::string v = "-123456789";
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "(1,234,567.89)");
 #else
@@ -104,7 +104,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "$0.00");
     }
     {   // negative one, showbase
@@ -112,7 +112,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "($0.01)");
 #else
@@ -124,7 +124,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "$1,234,567.89");
     }
     {   // negative, showbase
@@ -132,7 +132,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "($1,234,567.89)");
 #else
@@ -146,7 +146,7 @@ int main(int, char**)
         std::left(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "($1,234,567.89)     ");
 #else
@@ -161,7 +161,7 @@ int main(int, char**)
         std::internal(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "($     1,234,567.89)");
 #else
@@ -176,7 +176,7 @@ int main(int, char**)
         std::right(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), false, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "     ($1,234,567.89)");
 #else
@@ -192,14 +192,14 @@ int main(int, char**)
         std::string v = "0";
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0.00");
     }
     {   // negative one
         std::string v = "-1";
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "(0.01)");
 #else
@@ -210,14 +210,14 @@ int main(int, char**)
         std::string v = "123456789";
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1,234,567.89");
     }
     {   // negative
         std::string v = "-123456789";
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "(1,234,567.89)");
 #else
@@ -229,7 +229,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "USD0.00");
 #else
@@ -241,7 +241,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "(USD0.01)");
 #else
@@ -253,7 +253,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "USD1,234,567.89");
 #else
@@ -265,7 +265,7 @@ int main(int, char**)
         std::showbase(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "(USD1,234,567.89)");
 #else
@@ -279,7 +279,7 @@ int main(int, char**)
         std::left(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "(USD1,234,567.89)   ");
 #else
@@ -294,7 +294,7 @@ int main(int, char**)
         std::internal(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "(USD   1,234,567.89)");
 #else
@@ -309,7 +309,7 @@ int main(int, char**)
         std::right(ios);
         char str[100];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), true, ios, ' ', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == "   (USD1,234,567.89)");
 #else
@@ -328,14 +328,14 @@ int main(int, char**)
         std::wstring v = L"0";
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0.00");
     }
     {   // negative one
         std::wstring v = L"-1";
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"(0.01)");
 #else
@@ -346,14 +346,14 @@ int main(int, char**)
         std::wstring v = L"123456789";
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         std::wstring v = L"-123456789";
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"(1,234,567.89)");
 #else
@@ -365,7 +365,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"$0.00");
     }
     {   // negative one, showbase
@@ -373,7 +373,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"($0.01)");
 #else
@@ -385,7 +385,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"$1,234,567.89");
     }
     {   // negative, showbase
@@ -393,7 +393,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"($1,234,567.89)");
 #else
@@ -407,7 +407,7 @@ int main(int, char**)
         std::left(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"($1,234,567.89)     ");
 #else
@@ -422,7 +422,7 @@ int main(int, char**)
         std::internal(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"($     1,234,567.89)");
 #else
@@ -437,7 +437,7 @@ int main(int, char**)
         std::right(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), false, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"     ($1,234,567.89)");
 #else
@@ -453,14 +453,14 @@ int main(int, char**)
         std::wstring v = L"0";
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"0.00");
     }
     {   // negative one
         std::wstring v = L"-1";
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"(0.01)");
 #else
@@ -471,14 +471,14 @@ int main(int, char**)
         std::wstring v = L"123456789";
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
         assert(ex == L"1,234,567.89");
     }
     {   // negative
         std::wstring v = L"-123456789";
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"(1,234,567.89)");
 #else
@@ -490,7 +490,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"USD0.00");
 #else
@@ -502,7 +502,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"(USD0.01)");
 #else
@@ -514,7 +514,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"USD1,234,567.89");
 #else
@@ -526,7 +526,7 @@ int main(int, char**)
         std::showbase(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, '*', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"(USD1,234,567.89)");
 #else
@@ -540,7 +540,7 @@ int main(int, char**)
         std::left(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"(USD1,234,567.89)   ");
 #else
@@ -555,7 +555,7 @@ int main(int, char**)
         std::internal(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"(USD   1,234,567.89)");
 #else
@@ -570,7 +570,7 @@ int main(int, char**)
         std::right(ios);
         wchar_t str[100];
         cpp17_output_iterator<wchar_t*> iter = f.put(cpp17_output_iterator<wchar_t*>(str), true, ios, ' ', v);
-        std::wstring ex(str, iter.base());
+        std::wstring ex(str, base(iter));
 #ifdef _WIN32
         assert(ex == L"   (USD1,234,567.89)");
 #else

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 e8761cfdead0b..1ae9b639ea0ca 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
@@ -49,14 +49,14 @@ int main(int, char**)
             bool v = false;
             char str[50];
             cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-            std::string ex(str, iter.base());
+            std::string ex(str, base(iter));
             assert(ex == "0");
         }
         {
             bool v = true;
             char str[50];
             cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-            std::string ex(str, iter.base());
+            std::string ex(str, base(iter));
             assert(ex == "1");
         }
     }
@@ -67,14 +67,14 @@ int main(int, char**)
             bool v = false;
             char str[50];
             cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-            std::string ex(str, iter.base());
+            std::string ex(str, base(iter));
             assert(ex == "false");
         }
         {
             bool v = true;
             char str[50];
             cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-            std::string ex(str, iter.base());
+            std::string ex(str, base(iter));
             assert(ex == "true");
         }
     }
@@ -86,14 +86,14 @@ int main(int, char**)
             bool v = false;
             char str[50];
             cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-            std::string ex(str, iter.base());
+            std::string ex(str, base(iter));
             assert(ex == "no");
         }
         {
             bool v = true;
             char str[50];
             cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-            std::string ex(str, iter.base());
+            std::string ex(str, base(iter));
             assert(ex == "yes");
         }
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.hex.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.hex.pass.cpp
index 660a46fd5278f..21efa978abdcc 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.hex.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.hex.pass.cpp
@@ -74,7 +74,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -82,7 +82,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -90,7 +90,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -98,7 +98,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -108,7 +108,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -116,7 +116,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -124,7 +124,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -132,7 +132,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -145,7 +145,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -153,7 +153,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -161,7 +161,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -169,7 +169,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -179,7 +179,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -187,7 +187,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -195,7 +195,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -203,7 +203,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -219,7 +219,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -227,7 +227,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -235,7 +235,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -243,7 +243,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -253,7 +253,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -261,7 +261,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -269,7 +269,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -277,7 +277,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -290,7 +290,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -298,7 +298,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -306,7 +306,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -314,7 +314,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -324,7 +324,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -332,7 +332,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -340,7 +340,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -348,7 +348,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -367,7 +367,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -375,7 +375,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -383,7 +383,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -391,7 +391,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -401,7 +401,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -409,7 +409,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -417,7 +417,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -425,7 +425,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -438,7 +438,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -446,7 +446,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -454,7 +454,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -462,7 +462,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -472,7 +472,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -480,7 +480,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -488,7 +488,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -496,7 +496,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -512,7 +512,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -520,7 +520,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -528,7 +528,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -536,7 +536,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -546,7 +546,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -554,7 +554,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -562,7 +562,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -570,7 +570,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -583,7 +583,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -591,7 +591,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -599,7 +599,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -607,7 +607,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -617,7 +617,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -625,7 +625,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -633,7 +633,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -641,7 +641,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -663,7 +663,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -671,7 +671,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -679,7 +679,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -687,7 +687,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -697,7 +697,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -705,7 +705,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -713,7 +713,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -721,7 +721,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -734,7 +734,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -742,7 +742,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -750,7 +750,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -758,7 +758,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -768,7 +768,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -776,7 +776,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -784,7 +784,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -792,7 +792,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -808,7 +808,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -816,7 +816,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -824,7 +824,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -832,7 +832,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -842,7 +842,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -850,7 +850,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -858,7 +858,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -866,7 +866,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -879,7 +879,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -887,7 +887,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -895,7 +895,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -903,7 +903,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -913,7 +913,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -921,7 +921,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -929,7 +929,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -937,7 +937,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -956,7 +956,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -964,7 +964,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -972,7 +972,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -980,7 +980,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -990,7 +990,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -998,7 +998,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1006,7 +1006,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1014,7 +1014,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1027,7 +1027,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1035,7 +1035,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1043,7 +1043,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1051,7 +1051,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1061,7 +1061,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1069,7 +1069,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1077,7 +1077,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1085,7 +1085,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1101,7 +1101,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1109,7 +1109,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1117,7 +1117,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1125,7 +1125,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1135,7 +1135,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1143,7 +1143,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1151,7 +1151,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1159,7 +1159,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1172,7 +1172,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1180,7 +1180,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1188,7 +1188,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1196,7 +1196,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1206,7 +1206,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1214,7 +1214,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1222,7 +1222,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1230,7 +1230,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1252,7 +1252,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1260,7 +1260,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1268,7 +1268,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1276,7 +1276,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1286,7 +1286,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1294,7 +1294,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1302,7 +1302,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1310,7 +1310,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1323,7 +1323,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1331,7 +1331,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1339,7 +1339,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1347,7 +1347,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1357,7 +1357,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1365,7 +1365,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1373,7 +1373,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1381,7 +1381,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1397,7 +1397,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1405,7 +1405,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1413,7 +1413,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1421,7 +1421,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1431,7 +1431,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1439,7 +1439,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1447,7 +1447,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1455,7 +1455,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1468,7 +1468,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1476,7 +1476,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1484,7 +1484,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1492,7 +1492,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1502,7 +1502,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1510,7 +1510,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1518,7 +1518,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1526,7 +1526,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1545,7 +1545,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1553,7 +1553,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1561,7 +1561,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1569,7 +1569,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1579,7 +1579,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1587,7 +1587,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1595,7 +1595,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1603,7 +1603,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1616,7 +1616,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1624,7 +1624,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1632,7 +1632,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1640,7 +1640,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1650,7 +1650,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1658,7 +1658,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1666,7 +1666,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1674,7 +1674,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1690,7 +1690,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1698,7 +1698,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1706,7 +1706,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1714,7 +1714,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1724,7 +1724,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1732,7 +1732,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1740,7 +1740,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1748,7 +1748,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1761,7 +1761,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1769,7 +1769,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1777,7 +1777,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1785,7 +1785,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1795,7 +1795,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1803,7 +1803,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1811,7 +1811,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1819,7 +1819,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1863,7 +1863,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1871,7 +1871,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -1879,7 +1879,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1887,7 +1887,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1897,7 +1897,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1905,7 +1905,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -1913,7 +1913,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1921,7 +1921,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1934,7 +1934,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1942,7 +1942,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -1950,7 +1950,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1958,7 +1958,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1968,7 +1968,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1976,7 +1976,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -1984,7 +1984,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -1992,7 +1992,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2008,7 +2008,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2016,7 +2016,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2024,7 +2024,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2032,7 +2032,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2042,7 +2042,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2050,7 +2050,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2058,7 +2058,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2066,7 +2066,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2079,7 +2079,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2087,7 +2087,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2095,7 +2095,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2103,7 +2103,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2113,7 +2113,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2121,7 +2121,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2129,7 +2129,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2137,7 +2137,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2156,7 +2156,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2164,7 +2164,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2172,7 +2172,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2180,7 +2180,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2190,7 +2190,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2198,7 +2198,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2206,7 +2206,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2214,7 +2214,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2227,7 +2227,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2235,7 +2235,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2243,7 +2243,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2251,7 +2251,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2261,7 +2261,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2269,7 +2269,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2277,7 +2277,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2285,7 +2285,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2301,7 +2301,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2309,7 +2309,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2317,7 +2317,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2325,7 +2325,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2335,7 +2335,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2343,7 +2343,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2351,7 +2351,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2359,7 +2359,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2372,7 +2372,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2380,7 +2380,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2388,7 +2388,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2396,7 +2396,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2406,7 +2406,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2414,7 +2414,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2422,7 +2422,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2430,7 +2430,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2452,7 +2452,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2460,7 +2460,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2468,7 +2468,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2476,7 +2476,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2486,7 +2486,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2494,7 +2494,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2502,7 +2502,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2510,7 +2510,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2523,7 +2523,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2531,7 +2531,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2539,7 +2539,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2547,7 +2547,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2557,7 +2557,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2565,7 +2565,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2573,7 +2573,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2581,7 +2581,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2597,7 +2597,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2605,7 +2605,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2613,7 +2613,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2621,7 +2621,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2631,7 +2631,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2639,7 +2639,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2647,7 +2647,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2655,7 +2655,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2668,7 +2668,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2676,7 +2676,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2684,7 +2684,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2692,7 +2692,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2702,7 +2702,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2710,7 +2710,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2718,7 +2718,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2726,7 +2726,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2745,7 +2745,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2753,7 +2753,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2761,7 +2761,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2769,7 +2769,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2779,7 +2779,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2787,7 +2787,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2795,7 +2795,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2803,7 +2803,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2816,7 +2816,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2824,7 +2824,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2832,7 +2832,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2840,7 +2840,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2850,7 +2850,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2858,7 +2858,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -2866,7 +2866,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2874,7 +2874,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2890,7 +2890,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2898,7 +2898,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2906,7 +2906,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2914,7 +2914,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2924,7 +2924,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2932,7 +2932,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2940,7 +2940,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2948,7 +2948,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2961,7 +2961,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2969,7 +2969,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2977,7 +2977,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2985,7 +2985,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -2995,7 +2995,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3003,7 +3003,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -3011,7 +3011,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3019,7 +3019,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3047,7 +3047,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3055,7 +3055,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -3063,7 +3063,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3071,7 +3071,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3081,7 +3081,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3089,7 +3089,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -3097,7 +3097,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3105,7 +3105,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3118,7 +3118,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3126,7 +3126,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1.26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -3134,7 +3134,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3142,7 +3142,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3152,7 +3152,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3160,7 +3160,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x1;26580b488p+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -3168,7 +3168,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3176,7 +3176,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x********1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3192,7 +3192,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3200,7 +3200,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -3208,7 +3208,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3216,7 +3216,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3226,7 +3226,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3234,7 +3234,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -3242,7 +3242,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3250,7 +3250,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3263,7 +3263,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3271,7 +3271,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1.26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -3279,7 +3279,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3287,7 +3287,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1.26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3297,7 +3297,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3305,7 +3305,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x1;26580b488p+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -3313,7 +3313,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3321,7 +3321,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0x1;26580b488p+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3340,7 +3340,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3348,7 +3348,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -3356,7 +3356,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3364,7 +3364,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3374,7 +3374,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3382,7 +3382,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -3390,7 +3390,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3398,7 +3398,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3411,7 +3411,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3419,7 +3419,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1.26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -3427,7 +3427,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3435,7 +3435,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3445,7 +3445,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3453,7 +3453,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X1;26580B488P+30********");
                                     assert(ios.width() == 0);
                                 }
@@ -3461,7 +3461,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3469,7 +3469,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X********1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3485,7 +3485,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3493,7 +3493,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -3501,7 +3501,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3509,7 +3509,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3519,7 +3519,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3527,7 +3527,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -3535,7 +3535,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3543,7 +3543,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3556,7 +3556,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3564,7 +3564,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1.26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -3572,7 +3572,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3580,7 +3580,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0X1.26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3590,7 +3590,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3598,7 +3598,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X1;26580B488P+30*******");
                                     assert(ios.width() == 0);
                                 }
@@ -3606,7 +3606,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0X1;26580B488P+30");
                                     assert(ios.width() == 0);
                                 }
@@ -3614,7 +3614,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     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_double.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.pass.cpp
index 7784eecda3a66..d7fbfd21fe209 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
@@ -68,7 +68,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -76,7 +76,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -84,7 +84,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -92,7 +92,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -102,7 +102,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -110,7 +110,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -118,7 +118,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -126,7 +126,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -139,7 +139,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -147,7 +147,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -155,7 +155,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -163,7 +163,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -173,7 +173,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -181,7 +181,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -189,7 +189,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -197,7 +197,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -213,7 +213,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -221,7 +221,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -229,7 +229,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -237,7 +237,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -247,7 +247,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -255,7 +255,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -263,7 +263,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -271,7 +271,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -284,7 +284,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -292,7 +292,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -300,7 +300,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -308,7 +308,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -318,7 +318,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -326,7 +326,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -334,7 +334,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -342,7 +342,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -361,7 +361,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -369,7 +369,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -377,7 +377,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -385,7 +385,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -395,7 +395,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -403,7 +403,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -411,7 +411,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -419,7 +419,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -432,7 +432,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -440,7 +440,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -448,7 +448,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -456,7 +456,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -466,7 +466,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -474,7 +474,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -482,7 +482,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -490,7 +490,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -506,7 +506,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -514,7 +514,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -522,7 +522,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -530,7 +530,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -540,7 +540,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -548,7 +548,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -556,7 +556,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -564,7 +564,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -577,7 +577,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -585,7 +585,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -593,7 +593,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -601,7 +601,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -611,7 +611,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -619,7 +619,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -627,7 +627,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -635,7 +635,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -657,7 +657,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -665,7 +665,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -673,7 +673,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -681,7 +681,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -691,7 +691,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -699,7 +699,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -707,7 +707,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -715,7 +715,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -728,7 +728,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -736,7 +736,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -744,7 +744,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -752,7 +752,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -762,7 +762,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -770,7 +770,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -778,7 +778,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -786,7 +786,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -802,7 +802,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -810,7 +810,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -818,7 +818,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -826,7 +826,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -836,7 +836,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -844,7 +844,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -852,7 +852,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -860,7 +860,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -873,7 +873,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -881,7 +881,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -889,7 +889,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -897,7 +897,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -907,7 +907,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -915,7 +915,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -923,7 +923,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -931,7 +931,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -950,7 +950,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -958,7 +958,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -966,7 +966,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -974,7 +974,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -984,7 +984,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -992,7 +992,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1000,7 +1000,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1008,7 +1008,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1021,7 +1021,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1029,7 +1029,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1037,7 +1037,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1045,7 +1045,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1055,7 +1055,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1063,7 +1063,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1071,7 +1071,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1079,7 +1079,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1095,7 +1095,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1103,7 +1103,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1111,7 +1111,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1119,7 +1119,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1129,7 +1129,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1137,7 +1137,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1145,7 +1145,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1153,7 +1153,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1166,7 +1166,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1174,7 +1174,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1182,7 +1182,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1190,7 +1190,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1200,7 +1200,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1208,7 +1208,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1216,7 +1216,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1224,7 +1224,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1246,7 +1246,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1254,7 +1254,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1262,7 +1262,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1270,7 +1270,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1280,7 +1280,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1288,7 +1288,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1296,7 +1296,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1304,7 +1304,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1317,7 +1317,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1325,7 +1325,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1333,7 +1333,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1341,7 +1341,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1351,7 +1351,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1359,7 +1359,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1367,7 +1367,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1375,7 +1375,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1391,7 +1391,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1399,7 +1399,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1407,7 +1407,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1415,7 +1415,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1425,7 +1425,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1433,7 +1433,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1441,7 +1441,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1449,7 +1449,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1462,7 +1462,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1470,7 +1470,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1478,7 +1478,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1486,7 +1486,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1496,7 +1496,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1504,7 +1504,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1512,7 +1512,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1520,7 +1520,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1539,7 +1539,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1547,7 +1547,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1555,7 +1555,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1563,7 +1563,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1573,7 +1573,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1581,7 +1581,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1589,7 +1589,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1597,7 +1597,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1610,7 +1610,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1618,7 +1618,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1626,7 +1626,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1634,7 +1634,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1644,7 +1644,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1652,7 +1652,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1660,7 +1660,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1668,7 +1668,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1684,7 +1684,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1692,7 +1692,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1700,7 +1700,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1708,7 +1708,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1718,7 +1718,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1726,7 +1726,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1734,7 +1734,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1742,7 +1742,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1755,7 +1755,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1763,7 +1763,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1771,7 +1771,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1779,7 +1779,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1789,7 +1789,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1797,7 +1797,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1805,7 +1805,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1813,7 +1813,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1835,7 +1835,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1843,7 +1843,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1851,7 +1851,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1859,7 +1859,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1869,7 +1869,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1877,7 +1877,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1885,7 +1885,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1893,7 +1893,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1906,7 +1906,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1914,7 +1914,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000********");
                                     assert(ios.width() == 0);
                                 }
@@ -1922,7 +1922,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1930,7 +1930,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1940,7 +1940,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1948,7 +1948,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000********");
                                     assert(ios.width() == 0);
                                 }
@@ -1956,7 +1956,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1964,7 +1964,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1980,7 +1980,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1988,7 +1988,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1996,7 +1996,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2004,7 +2004,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2014,7 +2014,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2022,7 +2022,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2030,7 +2030,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2038,7 +2038,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2051,7 +2051,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2059,7 +2059,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2067,7 +2067,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2075,7 +2075,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2085,7 +2085,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2093,7 +2093,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2101,7 +2101,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2109,7 +2109,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2128,7 +2128,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2136,7 +2136,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2144,7 +2144,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2152,7 +2152,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2162,7 +2162,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2170,7 +2170,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2178,7 +2178,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2186,7 +2186,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2199,7 +2199,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2207,7 +2207,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000********");
                                     assert(ios.width() == 0);
                                 }
@@ -2215,7 +2215,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2223,7 +2223,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2233,7 +2233,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2241,7 +2241,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000********");
                                     assert(ios.width() == 0);
                                 }
@@ -2249,7 +2249,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2257,7 +2257,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2273,7 +2273,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2281,7 +2281,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2289,7 +2289,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2297,7 +2297,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2307,7 +2307,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2315,7 +2315,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2323,7 +2323,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2331,7 +2331,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2344,7 +2344,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2352,7 +2352,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2360,7 +2360,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2368,7 +2368,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2378,7 +2378,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2386,7 +2386,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2394,7 +2394,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2402,7 +2402,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2424,7 +2424,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2432,7 +2432,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2440,7 +2440,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2448,7 +2448,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2458,7 +2458,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2466,7 +2466,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2474,7 +2474,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2482,7 +2482,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2495,7 +2495,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2503,7 +2503,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2511,7 +2511,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2519,7 +2519,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2529,7 +2529,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2537,7 +2537,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2545,7 +2545,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2553,7 +2553,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2569,7 +2569,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2577,7 +2577,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2585,7 +2585,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2593,7 +2593,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2603,7 +2603,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2611,7 +2611,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2619,7 +2619,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2627,7 +2627,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2640,7 +2640,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2648,7 +2648,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2656,7 +2656,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2664,7 +2664,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2674,7 +2674,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2682,7 +2682,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2690,7 +2690,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2698,7 +2698,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2717,7 +2717,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2725,7 +2725,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2733,7 +2733,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2741,7 +2741,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2751,7 +2751,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2759,7 +2759,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2767,7 +2767,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2775,7 +2775,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2788,7 +2788,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2796,7 +2796,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2804,7 +2804,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2812,7 +2812,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2822,7 +2822,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2830,7 +2830,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2838,7 +2838,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2846,7 +2846,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2862,7 +2862,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2870,7 +2870,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2878,7 +2878,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2886,7 +2886,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2896,7 +2896,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2904,7 +2904,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2912,7 +2912,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2920,7 +2920,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2933,7 +2933,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2941,7 +2941,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2949,7 +2949,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2957,7 +2957,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2967,7 +2967,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2975,7 +2975,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2983,7 +2983,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2991,7 +2991,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -3028,7 +3028,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3036,7 +3036,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3044,7 +3044,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3052,7 +3052,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3062,7 +3062,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3070,7 +3070,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3078,7 +3078,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3086,7 +3086,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3099,7 +3099,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3107,7 +3107,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3115,7 +3115,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3123,7 +3123,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3133,7 +3133,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3141,7 +3141,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3149,7 +3149,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3157,7 +3157,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3173,7 +3173,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3181,7 +3181,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3189,7 +3189,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3197,7 +3197,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3207,7 +3207,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3215,7 +3215,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3223,7 +3223,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3231,7 +3231,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3244,7 +3244,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3252,7 +3252,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3260,7 +3260,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3268,7 +3268,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3278,7 +3278,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3286,7 +3286,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3294,7 +3294,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3302,7 +3302,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3321,7 +3321,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3329,7 +3329,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3337,7 +3337,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3345,7 +3345,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3355,7 +3355,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3363,7 +3363,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3371,7 +3371,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3379,7 +3379,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3392,7 +3392,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3400,7 +3400,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3408,7 +3408,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3416,7 +3416,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3426,7 +3426,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3434,7 +3434,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3442,7 +3442,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3450,7 +3450,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3466,7 +3466,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3474,7 +3474,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3482,7 +3482,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3490,7 +3490,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3500,7 +3500,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3508,7 +3508,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3516,7 +3516,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3524,7 +3524,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3537,7 +3537,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3545,7 +3545,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3553,7 +3553,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3561,7 +3561,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3571,7 +3571,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3579,7 +3579,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3587,7 +3587,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3595,7 +3595,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3617,7 +3617,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3625,7 +3625,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3633,7 +3633,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3641,7 +3641,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3651,7 +3651,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3659,7 +3659,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3667,7 +3667,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3675,7 +3675,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3688,7 +3688,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3696,7 +3696,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3704,7 +3704,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3712,7 +3712,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3722,7 +3722,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3730,7 +3730,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3738,7 +3738,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3746,7 +3746,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3762,7 +3762,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3770,7 +3770,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3778,7 +3778,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3786,7 +3786,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3796,7 +3796,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3804,7 +3804,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3812,7 +3812,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3820,7 +3820,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3833,7 +3833,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3841,7 +3841,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3849,7 +3849,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3857,7 +3857,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3867,7 +3867,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3875,7 +3875,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3883,7 +3883,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3891,7 +3891,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3910,7 +3910,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3918,7 +3918,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3926,7 +3926,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3934,7 +3934,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3944,7 +3944,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3952,7 +3952,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3960,7 +3960,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3968,7 +3968,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3981,7 +3981,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -3989,7 +3989,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -3997,7 +3997,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4005,7 +4005,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4015,7 +4015,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4023,7 +4023,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -4031,7 +4031,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4039,7 +4039,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4055,7 +4055,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4063,7 +4063,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -4071,7 +4071,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4079,7 +4079,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4089,7 +4089,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4097,7 +4097,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -4105,7 +4105,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4113,7 +4113,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4126,7 +4126,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4134,7 +4134,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -4142,7 +4142,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4150,7 +4150,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4160,7 +4160,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4168,7 +4168,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -4176,7 +4176,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4184,7 +4184,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4206,7 +4206,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4214,7 +4214,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457e+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -4222,7 +4222,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4230,7 +4230,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4240,7 +4240,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4248,7 +4248,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457e+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -4256,7 +4256,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4264,7 +4264,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4277,7 +4277,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4285,7 +4285,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457e+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -4293,7 +4293,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4301,7 +4301,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4311,7 +4311,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4319,7 +4319,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457e+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -4327,7 +4327,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4335,7 +4335,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4351,7 +4351,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4359,7 +4359,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457e+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -4367,7 +4367,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4375,7 +4375,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4385,7 +4385,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4393,7 +4393,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457e+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -4401,7 +4401,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4409,7 +4409,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4422,7 +4422,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4430,7 +4430,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457e+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -4438,7 +4438,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4446,7 +4446,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4456,7 +4456,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4464,7 +4464,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457e+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -4472,7 +4472,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4480,7 +4480,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4499,7 +4499,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4507,7 +4507,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457E+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -4515,7 +4515,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4523,7 +4523,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4533,7 +4533,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4541,7 +4541,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457E+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -4549,7 +4549,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4557,7 +4557,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4570,7 +4570,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4578,7 +4578,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457E+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -4586,7 +4586,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4594,7 +4594,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4604,7 +4604,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4612,7 +4612,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457E+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -4620,7 +4620,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4628,7 +4628,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4644,7 +4644,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4652,7 +4652,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457E+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -4660,7 +4660,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4668,7 +4668,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4678,7 +4678,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4686,7 +4686,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457E+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -4694,7 +4694,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4702,7 +4702,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4715,7 +4715,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4723,7 +4723,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457E+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -4731,7 +4731,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4739,7 +4739,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4749,7 +4749,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4757,7 +4757,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457E+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -4765,7 +4765,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4773,7 +4773,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -4795,7 +4795,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -4803,7 +4803,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
                                 }
@@ -4811,7 +4811,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -4819,7 +4819,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -4829,7 +4829,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -4837,7 +4837,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
                                 }
@@ -4845,7 +4845,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -4853,7 +4853,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -4866,7 +4866,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -4874,7 +4874,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -4882,7 +4882,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -4890,7 +4890,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -4900,7 +4900,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -4908,7 +4908,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -4916,7 +4916,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -4924,7 +4924,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -4940,7 +4940,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -4948,7 +4948,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
                                 }
@@ -4956,7 +4956,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -4964,7 +4964,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -4974,7 +4974,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -4982,7 +4982,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
                                 }
@@ -4990,7 +4990,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -4998,7 +4998,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5011,7 +5011,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5019,7 +5019,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5027,7 +5027,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5035,7 +5035,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5045,7 +5045,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5053,7 +5053,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -5061,7 +5061,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5069,7 +5069,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5088,7 +5088,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5096,7 +5096,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
                                 }
@@ -5104,7 +5104,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5112,7 +5112,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5122,7 +5122,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5130,7 +5130,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5138,7 +5138,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5146,7 +5146,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5159,7 +5159,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5167,7 +5167,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -5175,7 +5175,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5183,7 +5183,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5193,7 +5193,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5201,7 +5201,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -5209,7 +5209,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5217,7 +5217,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5233,7 +5233,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5241,7 +5241,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
                                 }
@@ -5249,7 +5249,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5257,7 +5257,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5267,7 +5267,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5275,7 +5275,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
                                 }
@@ -5283,7 +5283,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5291,7 +5291,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5304,7 +5304,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5312,7 +5312,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5320,7 +5320,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5328,7 +5328,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5338,7 +5338,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5346,7 +5346,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -5354,7 +5354,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5362,7 +5362,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -5384,7 +5384,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5392,7 +5392,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
                                 }
@@ -5400,7 +5400,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5408,7 +5408,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5418,7 +5418,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5426,7 +5426,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5434,7 +5434,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5442,7 +5442,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5455,7 +5455,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5463,7 +5463,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5471,7 +5471,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5479,7 +5479,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5489,7 +5489,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5497,7 +5497,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5505,7 +5505,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5513,7 +5513,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5529,7 +5529,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5537,7 +5537,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
                                 }
@@ -5545,7 +5545,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5553,7 +5553,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5563,7 +5563,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5571,7 +5571,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
                                 }
@@ -5579,7 +5579,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5587,7 +5587,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5600,7 +5600,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5608,7 +5608,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5616,7 +5616,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5624,7 +5624,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5634,7 +5634,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5642,7 +5642,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5650,7 +5650,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5658,7 +5658,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5677,7 +5677,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5685,7 +5685,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
                                 }
@@ -5693,7 +5693,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5701,7 +5701,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5711,7 +5711,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5719,7 +5719,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5727,7 +5727,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5735,7 +5735,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5748,7 +5748,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5756,7 +5756,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5764,7 +5764,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5772,7 +5772,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5782,7 +5782,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5790,7 +5790,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5798,7 +5798,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5806,7 +5806,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5822,7 +5822,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5830,7 +5830,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
                                 }
@@ -5838,7 +5838,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5846,7 +5846,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -5856,7 +5856,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5864,7 +5864,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
                                 }
@@ -5872,7 +5872,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5880,7 +5880,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -5893,7 +5893,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5901,7 +5901,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5909,7 +5909,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5917,7 +5917,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5927,7 +5927,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5935,7 +5935,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5943,7 +5943,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5951,7 +5951,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5989,7 +5989,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -5997,7 +5997,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -6005,7 +6005,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6013,7 +6013,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6023,7 +6023,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -6031,7 +6031,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -6039,7 +6039,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6047,7 +6047,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6060,7 +6060,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6068,7 +6068,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6076,7 +6076,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6084,7 +6084,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6094,7 +6094,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6102,7 +6102,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6110,7 +6110,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6118,7 +6118,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6134,7 +6134,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -6142,7 +6142,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6150,7 +6150,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -6158,7 +6158,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6168,7 +6168,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -6176,7 +6176,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6184,7 +6184,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -6192,7 +6192,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6205,7 +6205,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6213,7 +6213,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6221,7 +6221,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6229,7 +6229,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6239,7 +6239,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6247,7 +6247,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6255,7 +6255,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6263,7 +6263,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6282,7 +6282,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -6290,7 +6290,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -6298,7 +6298,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6306,7 +6306,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6316,7 +6316,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -6324,7 +6324,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -6332,7 +6332,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6340,7 +6340,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6353,7 +6353,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6361,7 +6361,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6369,7 +6369,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6377,7 +6377,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6387,7 +6387,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6395,7 +6395,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6403,7 +6403,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6411,7 +6411,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6427,7 +6427,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -6435,7 +6435,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6443,7 +6443,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -6451,7 +6451,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6461,7 +6461,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -6469,7 +6469,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6477,7 +6477,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -6485,7 +6485,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -6498,7 +6498,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6506,7 +6506,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6514,7 +6514,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6522,7 +6522,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -6532,7 +6532,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6540,7 +6540,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6548,7 +6548,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6556,7 +6556,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -6578,7 +6578,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6586,7 +6586,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6594,7 +6594,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6602,7 +6602,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6612,7 +6612,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6620,7 +6620,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6628,7 +6628,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6636,7 +6636,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6649,7 +6649,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6657,7 +6657,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6665,7 +6665,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6673,7 +6673,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6683,7 +6683,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6691,7 +6691,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6699,7 +6699,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6707,7 +6707,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6723,7 +6723,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6731,7 +6731,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6739,7 +6739,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6747,7 +6747,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6757,7 +6757,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6765,7 +6765,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6773,7 +6773,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6781,7 +6781,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6794,7 +6794,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6802,7 +6802,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6810,7 +6810,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6818,7 +6818,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6828,7 +6828,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6836,7 +6836,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6844,7 +6844,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6852,7 +6852,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6871,7 +6871,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6879,7 +6879,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6887,7 +6887,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6895,7 +6895,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6905,7 +6905,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6913,7 +6913,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6921,7 +6921,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6929,7 +6929,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6942,7 +6942,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6950,7 +6950,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6958,7 +6958,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6966,7 +6966,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -6976,7 +6976,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -6984,7 +6984,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6992,7 +6992,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -7000,7 +7000,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -7016,7 +7016,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -7024,7 +7024,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -7032,7 +7032,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -7040,7 +7040,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -7050,7 +7050,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -7058,7 +7058,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -7066,7 +7066,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -7074,7 +7074,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -7087,7 +7087,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -7095,7 +7095,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -7103,7 +7103,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -7111,7 +7111,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -7121,7 +7121,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -7129,7 +7129,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -7137,7 +7137,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -7145,7 +7145,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -7167,7 +7167,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7175,7 +7175,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7183,7 +7183,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7191,7 +7191,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7201,7 +7201,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7209,7 +7209,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7217,7 +7217,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7225,7 +7225,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7238,7 +7238,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7246,7 +7246,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7254,7 +7254,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7262,7 +7262,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7272,7 +7272,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7280,7 +7280,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7288,7 +7288,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7296,7 +7296,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7312,7 +7312,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7320,7 +7320,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7328,7 +7328,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7336,7 +7336,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7346,7 +7346,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7354,7 +7354,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7362,7 +7362,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7370,7 +7370,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7383,7 +7383,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7391,7 +7391,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7399,7 +7399,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7407,7 +7407,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7417,7 +7417,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7425,7 +7425,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7433,7 +7433,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7441,7 +7441,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7460,7 +7460,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7468,7 +7468,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7476,7 +7476,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7484,7 +7484,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7494,7 +7494,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7502,7 +7502,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7510,7 +7510,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7518,7 +7518,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7531,7 +7531,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7539,7 +7539,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7547,7 +7547,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7555,7 +7555,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7565,7 +7565,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7573,7 +7573,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7581,7 +7581,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7589,7 +7589,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7605,7 +7605,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7613,7 +7613,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7621,7 +7621,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7629,7 +7629,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7639,7 +7639,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7647,7 +7647,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7655,7 +7655,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7663,7 +7663,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7676,7 +7676,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7684,7 +7684,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7692,7 +7692,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7700,7 +7700,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7710,7 +7710,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7718,7 +7718,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -7726,7 +7726,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7734,7 +7734,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7756,7 +7756,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7764,7 +7764,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -7772,7 +7772,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7780,7 +7780,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7790,7 +7790,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7798,7 +7798,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -7806,7 +7806,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7814,7 +7814,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7827,7 +7827,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7835,7 +7835,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -7843,7 +7843,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7851,7 +7851,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7861,7 +7861,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7869,7 +7869,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -7877,7 +7877,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7885,7 +7885,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7901,7 +7901,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7909,7 +7909,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -7917,7 +7917,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7925,7 +7925,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7935,7 +7935,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7943,7 +7943,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -7951,7 +7951,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7959,7 +7959,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7972,7 +7972,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7980,7 +7980,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -7988,7 +7988,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -7996,7 +7996,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8006,7 +8006,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8014,7 +8014,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -8022,7 +8022,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8030,7 +8030,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8049,7 +8049,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8057,7 +8057,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -8065,7 +8065,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8073,7 +8073,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8083,7 +8083,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8091,7 +8091,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -8099,7 +8099,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8107,7 +8107,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8120,7 +8120,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8128,7 +8128,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -8136,7 +8136,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8144,7 +8144,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8154,7 +8154,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8162,7 +8162,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -8170,7 +8170,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8178,7 +8178,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8194,7 +8194,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8202,7 +8202,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -8210,7 +8210,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8218,7 +8218,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8228,7 +8228,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8236,7 +8236,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -8244,7 +8244,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8252,7 +8252,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8265,7 +8265,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8273,7 +8273,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -8281,7 +8281,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8289,7 +8289,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8299,7 +8299,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8307,7 +8307,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -8315,7 +8315,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8323,7 +8323,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8345,7 +8345,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8353,7 +8353,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8361,7 +8361,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8369,7 +8369,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8379,7 +8379,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8387,7 +8387,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8395,7 +8395,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8403,7 +8403,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8416,7 +8416,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8424,7 +8424,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8432,7 +8432,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8440,7 +8440,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8450,7 +8450,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8458,7 +8458,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8466,7 +8466,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8474,7 +8474,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8490,7 +8490,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8498,7 +8498,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8506,7 +8506,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8514,7 +8514,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8524,7 +8524,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8532,7 +8532,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8540,7 +8540,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8548,7 +8548,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8561,7 +8561,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8569,7 +8569,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8577,7 +8577,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8585,7 +8585,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8595,7 +8595,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8603,7 +8603,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8611,7 +8611,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8619,7 +8619,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8638,7 +8638,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8646,7 +8646,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8654,7 +8654,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8662,7 +8662,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8672,7 +8672,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8680,7 +8680,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8688,7 +8688,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8696,7 +8696,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8709,7 +8709,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8717,7 +8717,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8725,7 +8725,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8733,7 +8733,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8743,7 +8743,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8751,7 +8751,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8759,7 +8759,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8767,7 +8767,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8783,7 +8783,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8791,7 +8791,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8799,7 +8799,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8807,7 +8807,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8817,7 +8817,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8825,7 +8825,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8833,7 +8833,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8841,7 +8841,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8854,7 +8854,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8862,7 +8862,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8870,7 +8870,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8878,7 +8878,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8888,7 +8888,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8896,7 +8896,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8904,7 +8904,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8912,7 +8912,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8950,7 +8950,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -8958,7 +8958,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890***************");
                                     assert(ios.width() == 0);
                                 }
@@ -8966,7 +8966,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -8974,7 +8974,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -8984,7 +8984,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -8992,7 +8992,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0***********");
                                     assert(ios.width() == 0);
                                 }
@@ -9000,7 +9000,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9008,7 +9008,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9021,7 +9021,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9029,7 +9029,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.**************");
                                     assert(ios.width() == 0);
                                 }
@@ -9037,7 +9037,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9045,7 +9045,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9055,7 +9055,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9063,7 +9063,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;**********");
                                     assert(ios.width() == 0);
                                 }
@@ -9071,7 +9071,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9079,7 +9079,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9095,7 +9095,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -9103,7 +9103,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890**************");
                                     assert(ios.width() == 0);
                                 }
@@ -9111,7 +9111,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************+1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -9119,7 +9119,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -9129,7 +9129,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9137,7 +9137,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0**********");
                                     assert(ios.width() == 0);
                                 }
@@ -9145,7 +9145,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9153,7 +9153,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9166,7 +9166,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9174,7 +9174,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.*************");
                                     assert(ios.width() == 0);
                                 }
@@ -9182,7 +9182,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9190,7 +9190,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9200,7 +9200,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9208,7 +9208,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;*********");
                                     assert(ios.width() == 0);
                                 }
@@ -9216,7 +9216,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********+1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9224,7 +9224,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9243,7 +9243,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -9251,7 +9251,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890***************");
                                     assert(ios.width() == 0);
                                 }
@@ -9259,7 +9259,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -9267,7 +9267,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -9277,7 +9277,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9285,7 +9285,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0***********");
                                     assert(ios.width() == 0);
                                 }
@@ -9293,7 +9293,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9301,7 +9301,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9314,7 +9314,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9322,7 +9322,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.**************");
                                     assert(ios.width() == 0);
                                 }
@@ -9330,7 +9330,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9338,7 +9338,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9348,7 +9348,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9356,7 +9356,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;**********");
                                     assert(ios.width() == 0);
                                 }
@@ -9364,7 +9364,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9372,7 +9372,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9388,7 +9388,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -9396,7 +9396,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890**************");
                                     assert(ios.width() == 0);
                                 }
@@ -9404,7 +9404,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************+1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -9412,7 +9412,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -9422,7 +9422,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9430,7 +9430,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0**********");
                                     assert(ios.width() == 0);
                                 }
@@ -9438,7 +9438,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9446,7 +9446,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -9459,7 +9459,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9467,7 +9467,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.*************");
                                     assert(ios.width() == 0);
                                 }
@@ -9475,7 +9475,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9483,7 +9483,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -9493,7 +9493,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9501,7 +9501,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;*********");
                                     assert(ios.width() == 0);
                                 }
@@ -9509,7 +9509,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********+1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9517,7 +9517,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -9539,7 +9539,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9547,7 +9547,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
                                 }
@@ -9555,7 +9555,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9563,7 +9563,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9573,7 +9573,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9581,7 +9581,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
                                 }
@@ -9589,7 +9589,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9597,7 +9597,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9610,7 +9610,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9618,7 +9618,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
                                 }
@@ -9626,7 +9626,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9634,7 +9634,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9644,7 +9644,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9652,7 +9652,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
                                 }
@@ -9660,7 +9660,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9668,7 +9668,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9684,7 +9684,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9692,7 +9692,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
                                 }
@@ -9700,7 +9700,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9708,7 +9708,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9718,7 +9718,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9726,7 +9726,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
                                 }
@@ -9734,7 +9734,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9742,7 +9742,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9755,7 +9755,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9763,7 +9763,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
                                 }
@@ -9771,7 +9771,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9779,7 +9779,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9789,7 +9789,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9797,7 +9797,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
                                 }
@@ -9805,7 +9805,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9813,7 +9813,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9832,7 +9832,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9840,7 +9840,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
                                 }
@@ -9848,7 +9848,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9856,7 +9856,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9866,7 +9866,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9874,7 +9874,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
                                 }
@@ -9882,7 +9882,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9890,7 +9890,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9903,7 +9903,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9911,7 +9911,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
                                 }
@@ -9919,7 +9919,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9927,7 +9927,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9937,7 +9937,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9945,7 +9945,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
                                 }
@@ -9953,7 +9953,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9961,7 +9961,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -9977,7 +9977,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -9985,7 +9985,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
                                 }
@@ -9993,7 +9993,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -10001,7 +10001,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -10011,7 +10011,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -10019,7 +10019,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
                                 }
@@ -10027,7 +10027,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -10035,7 +10035,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -10048,7 +10048,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -10056,7 +10056,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
                                 }
@@ -10064,7 +10064,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -10072,7 +10072,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -10082,7 +10082,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -10090,7 +10090,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
                                 }
@@ -10098,7 +10098,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -10106,7 +10106,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -10128,7 +10128,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10136,7 +10136,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -10144,7 +10144,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10152,7 +10152,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10162,7 +10162,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10170,7 +10170,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -10178,7 +10178,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10186,7 +10186,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10199,7 +10199,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10207,7 +10207,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -10215,7 +10215,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10223,7 +10223,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10233,7 +10233,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10241,7 +10241,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -10249,7 +10249,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10257,7 +10257,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10273,7 +10273,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10281,7 +10281,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -10289,7 +10289,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10297,7 +10297,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10307,7 +10307,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10315,7 +10315,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -10323,7 +10323,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10331,7 +10331,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10344,7 +10344,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10352,7 +10352,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -10360,7 +10360,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10368,7 +10368,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10378,7 +10378,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10386,7 +10386,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -10394,7 +10394,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10402,7 +10402,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10421,7 +10421,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10429,7 +10429,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -10437,7 +10437,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10445,7 +10445,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10455,7 +10455,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10463,7 +10463,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -10471,7 +10471,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10479,7 +10479,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10492,7 +10492,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10500,7 +10500,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -10508,7 +10508,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10516,7 +10516,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10526,7 +10526,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10534,7 +10534,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -10542,7 +10542,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10550,7 +10550,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10566,7 +10566,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10574,7 +10574,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -10582,7 +10582,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10590,7 +10590,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10600,7 +10600,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10608,7 +10608,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -10616,7 +10616,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10624,7 +10624,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10637,7 +10637,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10645,7 +10645,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -10653,7 +10653,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10661,7 +10661,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10671,7 +10671,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10679,7 +10679,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -10687,7 +10687,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10695,7 +10695,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -10737,7 +10737,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10745,7 +10745,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -10753,7 +10753,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10761,7 +10761,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10771,7 +10771,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10779,7 +10779,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -10787,7 +10787,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10795,7 +10795,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10808,7 +10808,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10816,7 +10816,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.e+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -10824,7 +10824,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10832,7 +10832,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10842,7 +10842,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10850,7 +10850,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;e+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -10858,7 +10858,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10866,7 +10866,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10882,7 +10882,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10890,7 +10890,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -10898,7 +10898,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10906,7 +10906,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10916,7 +10916,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10924,7 +10924,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -10932,7 +10932,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10940,7 +10940,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10953,7 +10953,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10961,7 +10961,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.e+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -10969,7 +10969,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10977,7 +10977,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10987,7 +10987,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -10995,7 +10995,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;e+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -11003,7 +11003,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11011,7 +11011,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11030,7 +11030,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11038,7 +11038,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -11046,7 +11046,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11054,7 +11054,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11064,7 +11064,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11072,7 +11072,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -11080,7 +11080,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11088,7 +11088,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11101,7 +11101,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11109,7 +11109,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.E+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -11117,7 +11117,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11125,7 +11125,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11135,7 +11135,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11143,7 +11143,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;E+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -11151,7 +11151,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11159,7 +11159,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11175,7 +11175,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11183,7 +11183,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -11191,7 +11191,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11199,7 +11199,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11209,7 +11209,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11217,7 +11217,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -11225,7 +11225,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11233,7 +11233,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11246,7 +11246,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11254,7 +11254,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.E+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -11262,7 +11262,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11270,7 +11270,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11280,7 +11280,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11288,7 +11288,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;E+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -11296,7 +11296,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11304,7 +11304,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11326,7 +11326,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11334,7 +11334,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11342,7 +11342,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11350,7 +11350,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11360,7 +11360,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11368,7 +11368,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11376,7 +11376,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11384,7 +11384,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11397,7 +11397,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11405,7 +11405,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11413,7 +11413,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11421,7 +11421,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11431,7 +11431,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11439,7 +11439,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11447,7 +11447,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11455,7 +11455,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11471,7 +11471,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11479,7 +11479,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11487,7 +11487,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11495,7 +11495,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11505,7 +11505,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11513,7 +11513,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11521,7 +11521,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11529,7 +11529,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11542,7 +11542,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11550,7 +11550,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11558,7 +11558,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11566,7 +11566,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11576,7 +11576,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11584,7 +11584,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11592,7 +11592,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11600,7 +11600,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11619,7 +11619,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11627,7 +11627,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11635,7 +11635,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11643,7 +11643,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11653,7 +11653,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11661,7 +11661,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11669,7 +11669,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11677,7 +11677,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11690,7 +11690,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11698,7 +11698,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11706,7 +11706,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11714,7 +11714,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11724,7 +11724,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11732,7 +11732,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11740,7 +11740,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11748,7 +11748,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11764,7 +11764,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11772,7 +11772,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11780,7 +11780,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11788,7 +11788,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11798,7 +11798,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11806,7 +11806,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11814,7 +11814,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11822,7 +11822,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11835,7 +11835,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11843,7 +11843,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11851,7 +11851,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11859,7 +11859,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11869,7 +11869,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11877,7 +11877,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -11885,7 +11885,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11893,7 +11893,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11915,7 +11915,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11923,7 +11923,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -11931,7 +11931,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11939,7 +11939,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11949,7 +11949,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11957,7 +11957,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -11965,7 +11965,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11973,7 +11973,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11986,7 +11986,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -11994,7 +11994,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12002,7 +12002,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12010,7 +12010,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12020,7 +12020,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12028,7 +12028,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12036,7 +12036,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12044,7 +12044,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12060,7 +12060,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12068,7 +12068,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12076,7 +12076,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12084,7 +12084,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12094,7 +12094,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12102,7 +12102,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12110,7 +12110,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12118,7 +12118,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12131,7 +12131,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12139,7 +12139,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12147,7 +12147,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12155,7 +12155,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12165,7 +12165,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12173,7 +12173,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12181,7 +12181,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12189,7 +12189,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12208,7 +12208,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12216,7 +12216,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12224,7 +12224,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12232,7 +12232,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12242,7 +12242,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12250,7 +12250,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12258,7 +12258,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12266,7 +12266,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12279,7 +12279,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12287,7 +12287,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12295,7 +12295,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12303,7 +12303,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12313,7 +12313,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12321,7 +12321,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12329,7 +12329,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12337,7 +12337,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12353,7 +12353,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12361,7 +12361,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12369,7 +12369,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12377,7 +12377,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12387,7 +12387,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12395,7 +12395,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12403,7 +12403,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12411,7 +12411,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12424,7 +12424,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12432,7 +12432,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12440,7 +12440,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12448,7 +12448,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12458,7 +12458,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12466,7 +12466,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -12474,7 +12474,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12482,7 +12482,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -12526,7 +12526,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12534,7 +12534,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12542,7 +12542,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12550,7 +12550,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12560,7 +12560,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12568,7 +12568,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12576,7 +12576,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12584,7 +12584,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12597,7 +12597,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12605,7 +12605,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -12613,7 +12613,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12621,7 +12621,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12631,7 +12631,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12639,7 +12639,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -12647,7 +12647,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12655,7 +12655,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12671,7 +12671,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12679,7 +12679,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -12687,7 +12687,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12695,7 +12695,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12705,7 +12705,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12713,7 +12713,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -12721,7 +12721,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12729,7 +12729,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12742,7 +12742,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12750,7 +12750,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -12758,7 +12758,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12766,7 +12766,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12776,7 +12776,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12784,7 +12784,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -12792,7 +12792,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12800,7 +12800,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12819,7 +12819,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12827,7 +12827,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12835,7 +12835,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12843,7 +12843,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12853,7 +12853,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12861,7 +12861,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12869,7 +12869,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12877,7 +12877,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12890,7 +12890,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12898,7 +12898,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -12906,7 +12906,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12914,7 +12914,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12924,7 +12924,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12932,7 +12932,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -12940,7 +12940,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12948,7 +12948,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12964,7 +12964,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12972,7 +12972,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -12980,7 +12980,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12988,7 +12988,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -12998,7 +12998,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13006,7 +13006,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13014,7 +13014,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13022,7 +13022,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13035,7 +13035,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13043,7 +13043,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13051,7 +13051,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13059,7 +13059,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13069,7 +13069,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13077,7 +13077,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13085,7 +13085,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13093,7 +13093,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13115,7 +13115,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13123,7 +13123,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13131,7 +13131,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13139,7 +13139,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13149,7 +13149,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13157,7 +13157,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13165,7 +13165,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13173,7 +13173,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13186,7 +13186,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13194,7 +13194,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13202,7 +13202,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13210,7 +13210,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13220,7 +13220,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13228,7 +13228,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13236,7 +13236,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13244,7 +13244,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13260,7 +13260,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13268,7 +13268,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2e+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13276,7 +13276,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13284,7 +13284,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13294,7 +13294,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13302,7 +13302,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2e+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13310,7 +13310,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13318,7 +13318,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13331,7 +13331,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13339,7 +13339,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2e+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13347,7 +13347,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13355,7 +13355,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13365,7 +13365,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13373,7 +13373,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2e+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13381,7 +13381,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13389,7 +13389,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13408,7 +13408,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13416,7 +13416,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13424,7 +13424,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13432,7 +13432,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13442,7 +13442,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13450,7 +13450,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13458,7 +13458,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13466,7 +13466,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13479,7 +13479,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13487,7 +13487,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13495,7 +13495,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13503,7 +13503,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13513,7 +13513,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13521,7 +13521,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -13529,7 +13529,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13537,7 +13537,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13553,7 +13553,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13561,7 +13561,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2E+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13569,7 +13569,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13577,7 +13577,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13587,7 +13587,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13595,7 +13595,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2E+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13603,7 +13603,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13611,7 +13611,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13624,7 +13624,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13632,7 +13632,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2E+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13640,7 +13640,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13648,7 +13648,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13658,7 +13658,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13666,7 +13666,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2E+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13674,7 +13674,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13682,7 +13682,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13710,7 +13710,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13718,7 +13718,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13726,7 +13726,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13734,7 +13734,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13744,7 +13744,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13752,7 +13752,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13760,7 +13760,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13768,7 +13768,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13781,7 +13781,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13789,7 +13789,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13797,7 +13797,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13805,7 +13805,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13815,7 +13815,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13823,7 +13823,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13831,7 +13831,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13839,7 +13839,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13855,7 +13855,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13863,7 +13863,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13871,7 +13871,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13879,7 +13879,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13889,7 +13889,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13897,7 +13897,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13905,7 +13905,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13913,7 +13913,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13926,7 +13926,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13934,7 +13934,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13942,7 +13942,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13950,7 +13950,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13960,7 +13960,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13968,7 +13968,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13976,7 +13976,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -13984,7 +13984,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14003,7 +14003,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14011,7 +14011,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14019,7 +14019,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14027,7 +14027,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14037,7 +14037,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14045,7 +14045,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14053,7 +14053,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14061,7 +14061,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14074,7 +14074,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14082,7 +14082,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14090,7 +14090,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14098,7 +14098,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14108,7 +14108,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14116,7 +14116,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14124,7 +14124,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14132,7 +14132,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14148,7 +14148,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14156,7 +14156,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14164,7 +14164,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14172,7 +14172,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14182,7 +14182,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14190,7 +14190,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14198,7 +14198,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14206,7 +14206,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14219,7 +14219,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14227,7 +14227,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14235,7 +14235,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14243,7 +14243,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14253,7 +14253,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14261,7 +14261,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14269,7 +14269,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -14277,7 +14277,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     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 7cb77cc136346..17d5292becdb8 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
@@ -48,7 +48,7 @@ int main(int, char**)
         long v = 0;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0");
     }
     {
@@ -56,7 +56,7 @@ int main(int, char**)
         long v = 1;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1");
     }
     {
@@ -64,7 +64,7 @@ int main(int, char**)
         long v = -1;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1");
     }
     {
@@ -72,7 +72,7 @@ int main(int, char**)
         long v = -1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1000");
     }
     {
@@ -80,7 +80,7 @@ int main(int, char**)
         long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1000");
     }
     {
@@ -89,7 +89,7 @@ int main(int, char**)
         long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "+1000");
     }
     {
@@ -98,7 +98,7 @@ int main(int, char**)
         long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1750");
     }
     {
@@ -108,7 +108,7 @@ int main(int, char**)
         long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "01750");
     }
     {
@@ -117,7 +117,7 @@ int main(int, char**)
         long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "3e8");
     }
     {
@@ -127,7 +127,7 @@ int main(int, char**)
         long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x3e8");
     }
     {
@@ -138,7 +138,7 @@ int main(int, char**)
         long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0X3E8");
     }
     {
@@ -150,7 +150,7 @@ int main(int, char**)
         long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0X3E_8");
     }
     {
@@ -161,7 +161,7 @@ int main(int, char**)
         long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x7f_fff_ff_f");
     }
     {
@@ -171,7 +171,7 @@ int main(int, char**)
         long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "123_46_7");
     }
     {
@@ -182,7 +182,7 @@ int main(int, char**)
         long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0_123_46_7");
     }
     {
@@ -195,7 +195,7 @@ int main(int, char**)
         long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "*****0_123_46_7");
     }
     {
@@ -208,7 +208,7 @@ int main(int, char**)
         long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0_123_46_7*****");
     }
     {
@@ -221,7 +221,7 @@ int main(int, char**)
         long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "*****0_123_46_7");
         assert(ios.width() == 0);
     }
@@ -235,7 +235,7 @@ int main(int, char**)
         long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "**0x7f_fff_ff_f");
     }
     {
@@ -248,7 +248,7 @@ int main(int, char**)
         long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x7f_fff_ff_f**");
     }
     {
@@ -261,7 +261,7 @@ int main(int, char**)
         long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x**7f_fff_ff_f");
         assert(ios.width() == 0);
     }
@@ -274,7 +274,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "***+1_00_0");
         assert(ios.width() == 0);
     }
@@ -287,7 +287,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "+1_00_0***");
         assert(ios.width() == 0);
     }
@@ -300,7 +300,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "+***1_00_0");
         assert(ios.width() == 0);
     }
@@ -313,7 +313,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "***-1_00_0");
         assert(ios.width() == 0);
     }
@@ -325,7 +325,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1_00_0***");
         assert(ios.width() == 0);
     }
@@ -337,7 +337,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         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.hex.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.hex.pass.cpp
index a13b507a214b4..c97c9a0c40369 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.hex.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.hex.pass.cpp
@@ -74,7 +74,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -82,7 +82,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -90,7 +90,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -98,7 +98,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -108,7 +108,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -116,7 +116,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -124,7 +124,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -132,7 +132,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -145,7 +145,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -153,7 +153,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -161,7 +161,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -169,7 +169,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -179,7 +179,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -187,7 +187,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -195,7 +195,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -203,7 +203,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -219,7 +219,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -227,7 +227,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -235,7 +235,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -243,7 +243,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -253,7 +253,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -261,7 +261,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -269,7 +269,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -277,7 +277,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -290,7 +290,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -298,7 +298,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -306,7 +306,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -314,7 +314,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -324,7 +324,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -332,7 +332,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -340,7 +340,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -348,7 +348,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -367,7 +367,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -375,7 +375,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -383,7 +383,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -391,7 +391,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -401,7 +401,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -409,7 +409,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -417,7 +417,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -425,7 +425,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -438,7 +438,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -446,7 +446,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -454,7 +454,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -462,7 +462,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -472,7 +472,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -480,7 +480,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -488,7 +488,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -496,7 +496,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -512,7 +512,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -520,7 +520,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -528,7 +528,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -536,7 +536,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -546,7 +546,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -554,7 +554,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -562,7 +562,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -570,7 +570,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -583,7 +583,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -591,7 +591,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -599,7 +599,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -607,7 +607,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -617,7 +617,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -625,7 +625,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -633,7 +633,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -641,7 +641,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -663,7 +663,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -671,7 +671,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -679,7 +679,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -687,7 +687,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -697,7 +697,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -705,7 +705,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -713,7 +713,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -721,7 +721,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -734,7 +734,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -742,7 +742,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -750,7 +750,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -758,7 +758,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -768,7 +768,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -776,7 +776,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -784,7 +784,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -792,7 +792,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -808,7 +808,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -816,7 +816,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -824,7 +824,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -832,7 +832,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -842,7 +842,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -850,7 +850,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -858,7 +858,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -866,7 +866,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -879,7 +879,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -887,7 +887,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -895,7 +895,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -903,7 +903,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -913,7 +913,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -921,7 +921,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -929,7 +929,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -937,7 +937,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -956,7 +956,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -964,7 +964,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -972,7 +972,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -980,7 +980,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -990,7 +990,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -998,7 +998,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1006,7 +1006,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1014,7 +1014,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1027,7 +1027,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1035,7 +1035,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1043,7 +1043,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1051,7 +1051,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1061,7 +1061,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1069,7 +1069,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1077,7 +1077,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1085,7 +1085,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1101,7 +1101,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1109,7 +1109,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1117,7 +1117,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1125,7 +1125,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1135,7 +1135,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1143,7 +1143,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1151,7 +1151,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1159,7 +1159,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1172,7 +1172,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1180,7 +1180,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1188,7 +1188,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1196,7 +1196,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1206,7 +1206,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1214,7 +1214,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1222,7 +1222,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1230,7 +1230,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1252,7 +1252,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1260,7 +1260,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1268,7 +1268,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1276,7 +1276,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1286,7 +1286,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1294,7 +1294,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1302,7 +1302,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1310,7 +1310,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1323,7 +1323,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1331,7 +1331,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1339,7 +1339,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1347,7 +1347,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1357,7 +1357,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1365,7 +1365,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1373,7 +1373,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1381,7 +1381,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1397,7 +1397,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1405,7 +1405,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1413,7 +1413,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1421,7 +1421,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1431,7 +1431,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1439,7 +1439,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0p+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1447,7 +1447,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1455,7 +1455,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0x0p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1468,7 +1468,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1476,7 +1476,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0.p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1484,7 +1484,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1492,7 +1492,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0.p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1502,7 +1502,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1510,7 +1510,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0x0;p+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1518,7 +1518,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1526,7 +1526,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0x0;p+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1545,7 +1545,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1553,7 +1553,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1561,7 +1561,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1569,7 +1569,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1579,7 +1579,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1587,7 +1587,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1595,7 +1595,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1603,7 +1603,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1616,7 +1616,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1624,7 +1624,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1632,7 +1632,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1640,7 +1640,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1650,7 +1650,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1658,7 +1658,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1666,7 +1666,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1674,7 +1674,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1690,7 +1690,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1698,7 +1698,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1706,7 +1706,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1714,7 +1714,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1724,7 +1724,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1732,7 +1732,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0P+0******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1740,7 +1740,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1748,7 +1748,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0X0P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1761,7 +1761,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1769,7 +1769,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0.P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1777,7 +1777,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1785,7 +1785,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0.P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1795,7 +1795,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1803,7 +1803,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0X0;P+0*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1811,7 +1811,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1819,7 +1819,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0X0;P+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1868,7 +1868,7 @@ void test2()
                             {
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1876,7 +1876,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -1884,7 +1884,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1892,7 +1892,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1902,7 +1902,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1910,7 +1910,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -1918,7 +1918,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1926,7 +1926,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1939,7 +1939,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1947,7 +1947,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -1955,7 +1955,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1963,7 +1963,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1973,7 +1973,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1981,7 +1981,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -1989,7 +1989,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -1997,7 +1997,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2013,7 +2013,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2021,7 +2021,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2029,7 +2029,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2037,7 +2037,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2047,7 +2047,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2055,7 +2055,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2063,7 +2063,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2071,7 +2071,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2084,7 +2084,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2092,7 +2092,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2100,7 +2100,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2108,7 +2108,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2118,7 +2118,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2126,7 +2126,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2134,7 +2134,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2142,7 +2142,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2161,7 +2161,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2169,7 +2169,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2177,7 +2177,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2185,7 +2185,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2195,7 +2195,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2203,7 +2203,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2211,7 +2211,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2219,7 +2219,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2232,7 +2232,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2240,7 +2240,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2248,7 +2248,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2256,7 +2256,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2266,7 +2266,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2274,7 +2274,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2282,7 +2282,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2290,7 +2290,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2306,7 +2306,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2314,7 +2314,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2322,7 +2322,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2330,7 +2330,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2340,7 +2340,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2348,7 +2348,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2356,7 +2356,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2364,7 +2364,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2377,7 +2377,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2385,7 +2385,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2393,7 +2393,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2401,7 +2401,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2411,7 +2411,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2419,7 +2419,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2427,7 +2427,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2435,7 +2435,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2457,7 +2457,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2465,7 +2465,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2473,7 +2473,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2481,7 +2481,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2491,7 +2491,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2499,7 +2499,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2507,7 +2507,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2515,7 +2515,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2528,7 +2528,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2536,7 +2536,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2544,7 +2544,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2552,7 +2552,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2562,7 +2562,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2570,7 +2570,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2578,7 +2578,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2586,7 +2586,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2602,7 +2602,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2610,7 +2610,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2618,7 +2618,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2626,7 +2626,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2636,7 +2636,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2644,7 +2644,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2652,7 +2652,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2660,7 +2660,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2673,7 +2673,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2681,7 +2681,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2689,7 +2689,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2697,7 +2697,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2707,7 +2707,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2715,7 +2715,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2723,7 +2723,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2731,7 +2731,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2750,7 +2750,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2758,7 +2758,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2766,7 +2766,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2774,7 +2774,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2784,7 +2784,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2792,7 +2792,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2800,7 +2800,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2808,7 +2808,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2821,7 +2821,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2829,7 +2829,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2837,7 +2837,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2845,7 +2845,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2855,7 +2855,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2863,7 +2863,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -2871,7 +2871,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2879,7 +2879,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2895,7 +2895,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2903,7 +2903,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2911,7 +2911,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2919,7 +2919,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2929,7 +2929,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2937,7 +2937,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2945,7 +2945,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2953,7 +2953,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2966,7 +2966,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2974,7 +2974,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -2982,7 +2982,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -2990,7 +2990,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3000,7 +3000,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3008,7 +3008,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -3016,7 +3016,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3024,7 +3024,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3052,7 +3052,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3060,7 +3060,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -3068,7 +3068,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3076,7 +3076,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3086,7 +3086,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3094,7 +3094,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -3102,7 +3102,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3110,7 +3110,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3123,7 +3123,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3131,7 +3131,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9.32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -3139,7 +3139,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3147,7 +3147,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3157,7 +3157,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3165,7 +3165,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x9;32c05a44p+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -3173,7 +3173,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3181,7 +3181,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0x*********9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3197,7 +3197,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3205,7 +3205,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -3213,7 +3213,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3221,7 +3221,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3231,7 +3231,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3239,7 +3239,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -3247,7 +3247,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3255,7 +3255,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3268,7 +3268,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3276,7 +3276,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9.32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -3284,7 +3284,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3292,7 +3292,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9.32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3302,7 +3302,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3310,7 +3310,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0x9;32c05a44p+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -3318,7 +3318,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3326,7 +3326,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0x9;32c05a44p+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3345,7 +3345,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3353,7 +3353,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -3361,7 +3361,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3369,7 +3369,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3379,7 +3379,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3387,7 +3387,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -3395,7 +3395,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3403,7 +3403,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3416,7 +3416,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3424,7 +3424,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9.32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -3432,7 +3432,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3440,7 +3440,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3450,7 +3450,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3458,7 +3458,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X9;32C05A44P+27*********");
                                     assert(ios.width() == 0);
                                 }
@@ -3466,7 +3466,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3474,7 +3474,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0X*********9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3490,7 +3490,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3498,7 +3498,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -3506,7 +3506,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3514,7 +3514,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3524,7 +3524,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3532,7 +3532,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -3540,7 +3540,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3548,7 +3548,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3561,7 +3561,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3569,7 +3569,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9.32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -3577,7 +3577,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3585,7 +3585,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********0X9.32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3595,7 +3595,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3603,7 +3603,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0X9;32C05A44P+27********");
                                     assert(ios.width() == 0);
                                 }
@@ -3611,7 +3611,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+0X9;32C05A44P+27");
                                     assert(ios.width() == 0);
                                 }
@@ -3619,7 +3619,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     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_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 a433734ade263..eb1fa9d5d4163 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
@@ -69,7 +69,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -77,7 +77,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -85,7 +85,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -93,7 +93,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -103,7 +103,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -111,7 +111,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -119,7 +119,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -127,7 +127,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -140,7 +140,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -148,7 +148,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -156,7 +156,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -164,7 +164,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -174,7 +174,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -182,7 +182,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -190,7 +190,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -198,7 +198,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -214,7 +214,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -222,7 +222,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -230,7 +230,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -238,7 +238,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -248,7 +248,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -256,7 +256,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -264,7 +264,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -272,7 +272,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -285,7 +285,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -293,7 +293,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -301,7 +301,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -309,7 +309,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -319,7 +319,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -327,7 +327,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -335,7 +335,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -343,7 +343,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -362,7 +362,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -370,7 +370,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -378,7 +378,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -386,7 +386,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -396,7 +396,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -404,7 +404,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -412,7 +412,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -420,7 +420,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -433,7 +433,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -441,7 +441,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -449,7 +449,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -457,7 +457,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -467,7 +467,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -475,7 +475,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -483,7 +483,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -491,7 +491,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -507,7 +507,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -515,7 +515,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -523,7 +523,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -531,7 +531,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -541,7 +541,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -549,7 +549,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -557,7 +557,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -565,7 +565,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -578,7 +578,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -586,7 +586,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -594,7 +594,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -602,7 +602,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -612,7 +612,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -620,7 +620,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -628,7 +628,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -636,7 +636,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -658,7 +658,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -666,7 +666,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -674,7 +674,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -682,7 +682,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -692,7 +692,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -700,7 +700,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -708,7 +708,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -716,7 +716,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -729,7 +729,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -737,7 +737,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -745,7 +745,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -753,7 +753,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -763,7 +763,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -771,7 +771,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -779,7 +779,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -787,7 +787,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -803,7 +803,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -811,7 +811,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -819,7 +819,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -827,7 +827,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -837,7 +837,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -845,7 +845,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -853,7 +853,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -861,7 +861,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -874,7 +874,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -882,7 +882,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -890,7 +890,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -898,7 +898,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -908,7 +908,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -916,7 +916,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -924,7 +924,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -932,7 +932,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -951,7 +951,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -959,7 +959,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -967,7 +967,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -975,7 +975,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -985,7 +985,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -993,7 +993,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1001,7 +1001,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1009,7 +1009,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1022,7 +1022,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1030,7 +1030,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1038,7 +1038,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1046,7 +1046,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1056,7 +1056,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1064,7 +1064,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1072,7 +1072,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1080,7 +1080,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1096,7 +1096,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1104,7 +1104,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1112,7 +1112,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1120,7 +1120,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1130,7 +1130,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1138,7 +1138,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1146,7 +1146,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1154,7 +1154,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1167,7 +1167,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1175,7 +1175,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1183,7 +1183,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1191,7 +1191,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -1201,7 +1201,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1209,7 +1209,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1217,7 +1217,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1225,7 +1225,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -1247,7 +1247,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1255,7 +1255,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1263,7 +1263,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1271,7 +1271,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1281,7 +1281,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1289,7 +1289,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1297,7 +1297,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1305,7 +1305,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1318,7 +1318,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1326,7 +1326,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1334,7 +1334,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1342,7 +1342,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1352,7 +1352,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1360,7 +1360,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1368,7 +1368,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1376,7 +1376,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1392,7 +1392,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1400,7 +1400,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1408,7 +1408,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1416,7 +1416,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1426,7 +1426,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1434,7 +1434,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1442,7 +1442,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1450,7 +1450,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1463,7 +1463,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1471,7 +1471,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1479,7 +1479,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1487,7 +1487,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1497,7 +1497,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1505,7 +1505,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1513,7 +1513,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1521,7 +1521,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1540,7 +1540,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1548,7 +1548,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1556,7 +1556,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1564,7 +1564,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1574,7 +1574,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1582,7 +1582,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1590,7 +1590,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1598,7 +1598,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1611,7 +1611,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1619,7 +1619,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1627,7 +1627,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1635,7 +1635,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1645,7 +1645,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1653,7 +1653,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000******************");
                                     assert(ios.width() == 0);
                                 }
@@ -1661,7 +1661,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1669,7 +1669,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1685,7 +1685,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1693,7 +1693,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1701,7 +1701,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1709,7 +1709,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1719,7 +1719,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1727,7 +1727,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1735,7 +1735,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1743,7 +1743,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1756,7 +1756,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1764,7 +1764,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1772,7 +1772,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1780,7 +1780,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1790,7 +1790,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1798,7 +1798,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -1806,7 +1806,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1814,7 +1814,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -1836,7 +1836,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1844,7 +1844,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1852,7 +1852,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1860,7 +1860,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1870,7 +1870,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -1878,7 +1878,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -1886,7 +1886,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1894,7 +1894,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -1907,7 +1907,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1915,7 +1915,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000********");
                                     assert(ios.width() == 0);
                                 }
@@ -1923,7 +1923,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1931,7 +1931,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1941,7 +1941,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1949,7 +1949,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000********");
                                     assert(ios.width() == 0);
                                 }
@@ -1957,7 +1957,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1965,7 +1965,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -1981,7 +1981,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -1989,7 +1989,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -1997,7 +1997,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2005,7 +2005,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2015,7 +2015,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2023,7 +2023,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2031,7 +2031,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2039,7 +2039,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2052,7 +2052,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2060,7 +2060,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2068,7 +2068,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2076,7 +2076,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2086,7 +2086,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2094,7 +2094,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2102,7 +2102,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2110,7 +2110,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2129,7 +2129,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2137,7 +2137,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2145,7 +2145,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2153,7 +2153,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2163,7 +2163,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2171,7 +2171,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2179,7 +2179,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2187,7 +2187,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2200,7 +2200,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2208,7 +2208,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000********");
                                     assert(ios.width() == 0);
                                 }
@@ -2216,7 +2216,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2224,7 +2224,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2234,7 +2234,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2242,7 +2242,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000********");
                                     assert(ios.width() == 0);
                                 }
@@ -2250,7 +2250,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2258,7 +2258,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2274,7 +2274,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2282,7 +2282,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2290,7 +2290,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2298,7 +2298,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2308,7 +2308,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2316,7 +2316,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2324,7 +2324,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2332,7 +2332,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2345,7 +2345,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2353,7 +2353,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2361,7 +2361,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2369,7 +2369,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2379,7 +2379,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2387,7 +2387,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -2395,7 +2395,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2403,7 +2403,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2425,7 +2425,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2433,7 +2433,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2441,7 +2441,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2449,7 +2449,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2459,7 +2459,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2467,7 +2467,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2475,7 +2475,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2483,7 +2483,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2496,7 +2496,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2504,7 +2504,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2512,7 +2512,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2520,7 +2520,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2530,7 +2530,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2538,7 +2538,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2546,7 +2546,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2554,7 +2554,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2570,7 +2570,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2578,7 +2578,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2586,7 +2586,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2594,7 +2594,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2604,7 +2604,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2612,7 +2612,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2620,7 +2620,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2628,7 +2628,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2641,7 +2641,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2649,7 +2649,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2657,7 +2657,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2665,7 +2665,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2675,7 +2675,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2683,7 +2683,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2691,7 +2691,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2699,7 +2699,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2718,7 +2718,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2726,7 +2726,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2734,7 +2734,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2742,7 +2742,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2752,7 +2752,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -2760,7 +2760,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -2768,7 +2768,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2776,7 +2776,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2789,7 +2789,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2797,7 +2797,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2805,7 +2805,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2813,7 +2813,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2823,7 +2823,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2831,7 +2831,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2839,7 +2839,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2847,7 +2847,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2863,7 +2863,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2871,7 +2871,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2879,7 +2879,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2887,7 +2887,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2897,7 +2897,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2905,7 +2905,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -2913,7 +2913,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -2921,7 +2921,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -2934,7 +2934,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2942,7 +2942,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2950,7 +2950,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2958,7 +2958,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2968,7 +2968,7 @@ void test1()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2976,7 +2976,7 @@ void test1()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2984,7 +2984,7 @@ void test1()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -2992,7 +2992,7 @@ void test1()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -3029,7 +3029,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3037,7 +3037,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3045,7 +3045,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3053,7 +3053,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3063,7 +3063,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3071,7 +3071,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3079,7 +3079,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3087,7 +3087,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3100,7 +3100,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3108,7 +3108,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3116,7 +3116,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3124,7 +3124,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3134,7 +3134,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3142,7 +3142,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3150,7 +3150,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3158,7 +3158,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3174,7 +3174,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3182,7 +3182,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3190,7 +3190,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3198,7 +3198,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3208,7 +3208,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3216,7 +3216,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3224,7 +3224,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3232,7 +3232,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3245,7 +3245,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3253,7 +3253,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3261,7 +3261,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3269,7 +3269,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3279,7 +3279,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3287,7 +3287,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3295,7 +3295,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3303,7 +3303,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3322,7 +3322,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3330,7 +3330,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3338,7 +3338,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3346,7 +3346,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3356,7 +3356,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3364,7 +3364,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3372,7 +3372,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3380,7 +3380,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3393,7 +3393,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3401,7 +3401,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3409,7 +3409,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3417,7 +3417,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3427,7 +3427,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3435,7 +3435,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3443,7 +3443,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3451,7 +3451,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3467,7 +3467,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3475,7 +3475,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3483,7 +3483,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3491,7 +3491,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3501,7 +3501,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3509,7 +3509,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3517,7 +3517,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3525,7 +3525,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3538,7 +3538,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3546,7 +3546,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3554,7 +3554,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3562,7 +3562,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3572,7 +3572,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3580,7 +3580,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3588,7 +3588,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3596,7 +3596,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3618,7 +3618,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3626,7 +3626,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3634,7 +3634,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3642,7 +3642,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3652,7 +3652,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3660,7 +3660,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3668,7 +3668,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3676,7 +3676,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3689,7 +3689,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3697,7 +3697,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3705,7 +3705,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3713,7 +3713,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3723,7 +3723,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3731,7 +3731,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3739,7 +3739,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3747,7 +3747,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3763,7 +3763,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3771,7 +3771,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3779,7 +3779,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3787,7 +3787,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3797,7 +3797,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3805,7 +3805,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3813,7 +3813,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3821,7 +3821,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3834,7 +3834,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3842,7 +3842,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3850,7 +3850,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3858,7 +3858,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3868,7 +3868,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3876,7 +3876,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3884,7 +3884,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3892,7 +3892,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -3911,7 +3911,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3919,7 +3919,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3927,7 +3927,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3935,7 +3935,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3945,7 +3945,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3953,7 +3953,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3961,7 +3961,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -3969,7 +3969,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -3982,7 +3982,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -3990,7 +3990,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -3998,7 +3998,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -4006,7 +4006,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -4016,7 +4016,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -4024,7 +4024,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4032,7 +4032,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -4040,7 +4040,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -4056,7 +4056,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4064,7 +4064,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4072,7 +4072,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4080,7 +4080,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4090,7 +4090,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4098,7 +4098,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4106,7 +4106,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4114,7 +4114,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4127,7 +4127,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -4135,7 +4135,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4143,7 +4143,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -4151,7 +4151,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -4161,7 +4161,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -4169,7 +4169,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4177,7 +4177,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -4185,7 +4185,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -4207,7 +4207,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4215,7 +4215,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4223,7 +4223,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4231,7 +4231,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4241,7 +4241,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4249,7 +4249,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4257,7 +4257,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4265,7 +4265,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4278,7 +4278,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4286,7 +4286,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -4294,7 +4294,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4302,7 +4302,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4312,7 +4312,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4320,7 +4320,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -4328,7 +4328,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4336,7 +4336,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4352,7 +4352,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4360,7 +4360,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4368,7 +4368,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4376,7 +4376,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4386,7 +4386,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4394,7 +4394,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4402,7 +4402,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4410,7 +4410,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4423,7 +4423,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4431,7 +4431,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -4439,7 +4439,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4447,7 +4447,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4457,7 +4457,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4465,7 +4465,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -4473,7 +4473,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4481,7 +4481,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4500,7 +4500,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4508,7 +4508,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4516,7 +4516,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4524,7 +4524,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4534,7 +4534,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4542,7 +4542,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4550,7 +4550,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4558,7 +4558,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4571,7 +4571,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4579,7 +4579,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -4587,7 +4587,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4595,7 +4595,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4605,7 +4605,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4613,7 +4613,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -4621,7 +4621,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4629,7 +4629,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4645,7 +4645,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4653,7 +4653,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4661,7 +4661,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4669,7 +4669,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4679,7 +4679,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4687,7 +4687,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4695,7 +4695,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4703,7 +4703,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4716,7 +4716,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4724,7 +4724,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -4732,7 +4732,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4740,7 +4740,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4750,7 +4750,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4758,7 +4758,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -4766,7 +4766,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4774,7 +4774,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;00000");
                                     assert(ios.width() == 0);
                                 }
@@ -4796,7 +4796,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4804,7 +4804,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4812,7 +4812,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4820,7 +4820,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4830,7 +4830,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4838,7 +4838,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4846,7 +4846,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4854,7 +4854,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4867,7 +4867,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -4875,7 +4875,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -4883,7 +4883,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******-0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -4891,7 +4891,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -4901,7 +4901,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -4909,7 +4909,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -4917,7 +4917,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******-0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -4925,7 +4925,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -4941,7 +4941,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4949,7 +4949,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4957,7 +4957,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4965,7 +4965,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -4975,7 +4975,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4983,7 +4983,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -4991,7 +4991,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -4999,7 +4999,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5012,7 +5012,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5020,7 +5020,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5028,7 +5028,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******-0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5036,7 +5036,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5046,7 +5046,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5054,7 +5054,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5062,7 +5062,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******-0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5070,7 +5070,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5089,7 +5089,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5097,7 +5097,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5105,7 +5105,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5113,7 +5113,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5123,7 +5123,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5131,7 +5131,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5139,7 +5139,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5147,7 +5147,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5160,7 +5160,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5168,7 +5168,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5176,7 +5176,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******-0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5184,7 +5184,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5194,7 +5194,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5202,7 +5202,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5210,7 +5210,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******-0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5218,7 +5218,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5234,7 +5234,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5242,7 +5242,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5250,7 +5250,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5258,7 +5258,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5268,7 +5268,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5276,7 +5276,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5284,7 +5284,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5292,7 +5292,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5305,7 +5305,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5313,7 +5313,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5321,7 +5321,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******-0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5329,7 +5329,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******0.000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5339,7 +5339,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5347,7 +5347,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -5355,7 +5355,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******-0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5363,7 +5363,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******0;000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5385,7 +5385,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5393,7 +5393,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5401,7 +5401,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5409,7 +5409,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5419,7 +5419,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5427,7 +5427,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5435,7 +5435,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5443,7 +5443,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5456,7 +5456,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5464,7 +5464,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5472,7 +5472,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5480,7 +5480,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5490,7 +5490,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5498,7 +5498,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5506,7 +5506,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5514,7 +5514,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5530,7 +5530,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5538,7 +5538,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5546,7 +5546,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5554,7 +5554,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5564,7 +5564,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5572,7 +5572,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5580,7 +5580,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5588,7 +5588,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5601,7 +5601,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5609,7 +5609,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5617,7 +5617,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5625,7 +5625,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5635,7 +5635,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5643,7 +5643,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5651,7 +5651,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5659,7 +5659,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5678,7 +5678,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5686,7 +5686,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5694,7 +5694,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5702,7 +5702,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5712,7 +5712,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5720,7 +5720,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5728,7 +5728,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5736,7 +5736,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5749,7 +5749,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5757,7 +5757,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5765,7 +5765,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5773,7 +5773,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5783,7 +5783,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5791,7 +5791,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5799,7 +5799,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5807,7 +5807,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5823,7 +5823,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5831,7 +5831,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5839,7 +5839,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5847,7 +5847,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5857,7 +5857,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5865,7 +5865,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -5873,7 +5873,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -5881,7 +5881,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -5894,7 +5894,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5902,7 +5902,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5910,7 +5910,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5918,7 +5918,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5928,7 +5928,7 @@ void test2()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5936,7 +5936,7 @@ void test2()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5944,7 +5944,7 @@ void test2()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5952,7 +5952,7 @@ void test2()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;00000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -5989,7 +5989,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -5997,7 +5997,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6005,7 +6005,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6013,7 +6013,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6023,7 +6023,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6031,7 +6031,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6039,7 +6039,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6047,7 +6047,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6060,7 +6060,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6068,7 +6068,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6076,7 +6076,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6084,7 +6084,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6094,7 +6094,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6102,7 +6102,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6110,7 +6110,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6118,7 +6118,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6134,7 +6134,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6142,7 +6142,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6150,7 +6150,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6158,7 +6158,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6168,7 +6168,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6176,7 +6176,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6184,7 +6184,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6192,7 +6192,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6205,7 +6205,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6213,7 +6213,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6221,7 +6221,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6229,7 +6229,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6239,7 +6239,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6247,7 +6247,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6255,7 +6255,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6263,7 +6263,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6282,7 +6282,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6290,7 +6290,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6298,7 +6298,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6306,7 +6306,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6316,7 +6316,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6324,7 +6324,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6332,7 +6332,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6340,7 +6340,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6353,7 +6353,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6361,7 +6361,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6369,7 +6369,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6377,7 +6377,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6387,7 +6387,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6395,7 +6395,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6403,7 +6403,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6411,7 +6411,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6427,7 +6427,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6435,7 +6435,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6443,7 +6443,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6451,7 +6451,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6461,7 +6461,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6469,7 +6469,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6477,7 +6477,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6485,7 +6485,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6498,7 +6498,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6506,7 +6506,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6514,7 +6514,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6522,7 +6522,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6532,7 +6532,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6540,7 +6540,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6548,7 +6548,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6556,7 +6556,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6578,7 +6578,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6586,7 +6586,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6594,7 +6594,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6602,7 +6602,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6612,7 +6612,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6620,7 +6620,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6628,7 +6628,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6636,7 +6636,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6649,7 +6649,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6657,7 +6657,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6665,7 +6665,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6673,7 +6673,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6683,7 +6683,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6691,7 +6691,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6699,7 +6699,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6707,7 +6707,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6723,7 +6723,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6731,7 +6731,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6739,7 +6739,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6747,7 +6747,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6757,7 +6757,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6765,7 +6765,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6773,7 +6773,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6781,7 +6781,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6794,7 +6794,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6802,7 +6802,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6810,7 +6810,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6818,7 +6818,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6828,7 +6828,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6836,7 +6836,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6844,7 +6844,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6852,7 +6852,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6871,7 +6871,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6879,7 +6879,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6887,7 +6887,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6895,7 +6895,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6905,7 +6905,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6913,7 +6913,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -6921,7 +6921,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6929,7 +6929,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6942,7 +6942,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6950,7 +6950,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6958,7 +6958,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6966,7 +6966,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6976,7 +6976,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -6984,7 +6984,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -6992,7 +6992,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7000,7 +7000,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7016,7 +7016,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7024,7 +7024,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -7032,7 +7032,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7040,7 +7040,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7050,7 +7050,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7058,7 +7058,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -7066,7 +7066,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7074,7 +7074,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7087,7 +7087,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7095,7 +7095,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -7103,7 +7103,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7111,7 +7111,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7121,7 +7121,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7129,7 +7129,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -7137,7 +7137,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7145,7 +7145,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7167,7 +7167,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7175,7 +7175,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457e+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -7183,7 +7183,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7191,7 +7191,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7201,7 +7201,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7209,7 +7209,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457e+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -7217,7 +7217,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7225,7 +7225,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7238,7 +7238,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7246,7 +7246,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457e+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -7254,7 +7254,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7262,7 +7262,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7272,7 +7272,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7280,7 +7280,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457e+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -7288,7 +7288,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7296,7 +7296,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7312,7 +7312,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7320,7 +7320,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457e+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -7328,7 +7328,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7336,7 +7336,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7346,7 +7346,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7354,7 +7354,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457e+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -7362,7 +7362,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7370,7 +7370,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7383,7 +7383,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7391,7 +7391,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457e+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -7399,7 +7399,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7407,7 +7407,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1.23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7417,7 +7417,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7425,7 +7425,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457e+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -7433,7 +7433,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7441,7 +7441,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1;23457e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7460,7 +7460,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7468,7 +7468,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457E+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -7476,7 +7476,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7484,7 +7484,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7494,7 +7494,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7502,7 +7502,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457E+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -7510,7 +7510,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7518,7 +7518,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7531,7 +7531,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7539,7 +7539,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.23457E+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -7547,7 +7547,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7555,7 +7555,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7565,7 +7565,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7573,7 +7573,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;23457E+09**************");
                                     assert(ios.width() == 0);
                                 }
@@ -7581,7 +7581,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7589,7 +7589,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7605,7 +7605,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7613,7 +7613,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457E+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -7621,7 +7621,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7629,7 +7629,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7639,7 +7639,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7647,7 +7647,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457E+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -7655,7 +7655,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7663,7 +7663,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7676,7 +7676,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7684,7 +7684,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.23457E+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -7692,7 +7692,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7700,7 +7700,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1.23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7710,7 +7710,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7718,7 +7718,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;23457E+09*************");
                                     assert(ios.width() == 0);
                                 }
@@ -7726,7 +7726,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7734,7 +7734,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1;23457E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -7756,7 +7756,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -7764,7 +7764,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
                                 }
@@ -7772,7 +7772,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -7780,7 +7780,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -7790,7 +7790,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -7798,7 +7798,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
                                 }
@@ -7806,7 +7806,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -7814,7 +7814,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -7827,7 +7827,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -7835,7 +7835,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -7843,7 +7843,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -7851,7 +7851,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -7861,7 +7861,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -7869,7 +7869,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -7877,7 +7877,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -7885,7 +7885,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -7901,7 +7901,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -7909,7 +7909,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
                                 }
@@ -7917,7 +7917,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -7925,7 +7925,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -7935,7 +7935,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -7943,7 +7943,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
                                 }
@@ -7951,7 +7951,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -7959,7 +7959,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -7972,7 +7972,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -7980,7 +7980,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -7988,7 +7988,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -7996,7 +7996,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8006,7 +8006,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8014,7 +8014,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -8022,7 +8022,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8030,7 +8030,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8049,7 +8049,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8057,7 +8057,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
                                 }
@@ -8065,7 +8065,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8073,7 +8073,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8083,7 +8083,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8091,7 +8091,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
                                 }
@@ -8099,7 +8099,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8107,7 +8107,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8120,7 +8120,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8128,7 +8128,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -8136,7 +8136,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8144,7 +8144,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8154,7 +8154,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8162,7 +8162,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -8170,7 +8170,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8178,7 +8178,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8194,7 +8194,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8202,7 +8202,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
                                 }
@@ -8210,7 +8210,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8218,7 +8218,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8228,7 +8228,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8236,7 +8236,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
                                 }
@@ -8244,7 +8244,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8252,7 +8252,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8265,7 +8265,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8273,7 +8273,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -8281,7 +8281,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8289,7 +8289,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8299,7 +8299,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8307,7 +8307,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -8315,7 +8315,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8323,7 +8323,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -8345,7 +8345,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8353,7 +8353,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
                                 }
@@ -8361,7 +8361,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8369,7 +8369,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8379,7 +8379,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8387,7 +8387,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
                                 }
@@ -8395,7 +8395,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8403,7 +8403,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8416,7 +8416,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8424,7 +8424,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8432,7 +8432,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8440,7 +8440,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8450,7 +8450,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8458,7 +8458,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8466,7 +8466,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8474,7 +8474,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8490,7 +8490,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8498,7 +8498,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
                                 }
@@ -8506,7 +8506,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8514,7 +8514,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8524,7 +8524,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8532,7 +8532,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
                                 }
@@ -8540,7 +8540,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8548,7 +8548,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8561,7 +8561,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8569,7 +8569,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8577,7 +8577,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8585,7 +8585,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8595,7 +8595,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8603,7 +8603,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8611,7 +8611,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8619,7 +8619,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8638,7 +8638,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8646,7 +8646,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125***********");
                                     assert(ios.width() == 0);
                                 }
@@ -8654,7 +8654,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8662,7 +8662,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8672,7 +8672,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8680,7 +8680,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125*******");
                                     assert(ios.width() == 0);
                                 }
@@ -8688,7 +8688,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8696,7 +8696,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8709,7 +8709,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8717,7 +8717,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8725,7 +8725,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8733,7 +8733,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8743,7 +8743,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8751,7 +8751,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8759,7 +8759,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8767,7 +8767,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8783,7 +8783,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8791,7 +8791,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125**********");
                                     assert(ios.width() == 0);
                                 }
@@ -8799,7 +8799,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8807,7 +8807,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1234567890.125");
                                     assert(ios.width() == 0);
                                 }
@@ -8817,7 +8817,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8825,7 +8825,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125******");
                                     assert(ios.width() == 0);
                                 }
@@ -8833,7 +8833,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8841,7 +8841,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******1_234_567_89_0;125");
                                     assert(ios.width() == 0);
                                 }
@@ -8854,7 +8854,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8862,7 +8862,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8870,7 +8870,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8878,7 +8878,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8888,7 +8888,7 @@ void test3()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8896,7 +8896,7 @@ void test3()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8904,7 +8904,7 @@ void test3()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8912,7 +8912,7 @@ void test3()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;12500000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -8949,7 +8949,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -8957,7 +8957,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -8965,7 +8965,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -8973,7 +8973,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -8983,7 +8983,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -8991,7 +8991,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -8999,7 +8999,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9007,7 +9007,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9020,7 +9020,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9028,7 +9028,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9036,7 +9036,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9044,7 +9044,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9054,7 +9054,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9062,7 +9062,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9070,7 +9070,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9078,7 +9078,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9094,7 +9094,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9102,7 +9102,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9110,7 +9110,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9118,7 +9118,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9128,7 +9128,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9136,7 +9136,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9144,7 +9144,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9152,7 +9152,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9165,7 +9165,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9173,7 +9173,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9181,7 +9181,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9189,7 +9189,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9199,7 +9199,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9207,7 +9207,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9215,7 +9215,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9223,7 +9223,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9242,7 +9242,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9250,7 +9250,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9258,7 +9258,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9266,7 +9266,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9276,7 +9276,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9284,7 +9284,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9292,7 +9292,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9300,7 +9300,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9313,7 +9313,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9321,7 +9321,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9329,7 +9329,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9337,7 +9337,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9347,7 +9347,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9355,7 +9355,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9363,7 +9363,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9371,7 +9371,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9387,7 +9387,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9395,7 +9395,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9403,7 +9403,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9411,7 +9411,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9421,7 +9421,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9429,7 +9429,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9437,7 +9437,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9445,7 +9445,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9458,7 +9458,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9466,7 +9466,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9474,7 +9474,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9482,7 +9482,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9492,7 +9492,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9500,7 +9500,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9508,7 +9508,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9516,7 +9516,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9538,7 +9538,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9546,7 +9546,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9554,7 +9554,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9562,7 +9562,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9572,7 +9572,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9580,7 +9580,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9588,7 +9588,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9596,7 +9596,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9609,7 +9609,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9617,7 +9617,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9625,7 +9625,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9633,7 +9633,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9643,7 +9643,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9651,7 +9651,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9659,7 +9659,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9667,7 +9667,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9683,7 +9683,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9691,7 +9691,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9699,7 +9699,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9707,7 +9707,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9717,7 +9717,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9725,7 +9725,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9733,7 +9733,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9741,7 +9741,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9754,7 +9754,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9762,7 +9762,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9770,7 +9770,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9778,7 +9778,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9788,7 +9788,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9796,7 +9796,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9804,7 +9804,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9812,7 +9812,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -9831,7 +9831,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9839,7 +9839,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9847,7 +9847,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9855,7 +9855,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9865,7 +9865,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9873,7 +9873,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9881,7 +9881,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9889,7 +9889,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9902,7 +9902,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9910,7 +9910,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9918,7 +9918,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9926,7 +9926,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9936,7 +9936,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9944,7 +9944,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9952,7 +9952,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9960,7 +9960,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9976,7 +9976,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -9984,7 +9984,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -9992,7 +9992,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10000,7 +10000,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10010,7 +10010,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10018,7 +10018,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10026,7 +10026,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10034,7 +10034,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10047,7 +10047,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10055,7 +10055,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10063,7 +10063,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10071,7 +10071,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10081,7 +10081,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10089,7 +10089,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10097,7 +10097,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10105,7 +10105,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10127,7 +10127,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10135,7 +10135,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10143,7 +10143,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10151,7 +10151,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10161,7 +10161,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10169,7 +10169,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10177,7 +10177,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10185,7 +10185,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10198,7 +10198,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10206,7 +10206,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10214,7 +10214,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10222,7 +10222,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10232,7 +10232,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10240,7 +10240,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10248,7 +10248,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10256,7 +10256,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10272,7 +10272,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10280,7 +10280,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10288,7 +10288,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10296,7 +10296,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10306,7 +10306,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10314,7 +10314,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10322,7 +10322,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10330,7 +10330,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10343,7 +10343,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10351,7 +10351,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10359,7 +10359,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10367,7 +10367,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10377,7 +10377,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10385,7 +10385,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-inf*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10393,7 +10393,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10401,7 +10401,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************inf");
                                     assert(ios.width() == 0);
                                 }
@@ -10420,7 +10420,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10428,7 +10428,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10436,7 +10436,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10444,7 +10444,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10454,7 +10454,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10462,7 +10462,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10470,7 +10470,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10478,7 +10478,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10491,7 +10491,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10499,7 +10499,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10507,7 +10507,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10515,7 +10515,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10525,7 +10525,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10533,7 +10533,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10541,7 +10541,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10549,7 +10549,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10565,7 +10565,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10573,7 +10573,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10581,7 +10581,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10589,7 +10589,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10599,7 +10599,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10607,7 +10607,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10615,7 +10615,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10623,7 +10623,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10636,7 +10636,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10644,7 +10644,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10652,7 +10652,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10660,7 +10660,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10670,7 +10670,7 @@ void test4()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10678,7 +10678,7 @@ void test4()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-INF*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10686,7 +10686,7 @@ void test4()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10694,7 +10694,7 @@ void test4()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************INF");
                                     assert(ios.width() == 0);
                                 }
@@ -10742,7 +10742,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10750,7 +10750,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10758,7 +10758,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10766,7 +10766,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10776,7 +10776,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10784,7 +10784,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10792,7 +10792,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10800,7 +10800,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10813,7 +10813,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10821,7 +10821,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10829,7 +10829,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10837,7 +10837,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10847,7 +10847,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10855,7 +10855,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "nan**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -10863,7 +10863,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10871,7 +10871,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10887,7 +10887,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10895,7 +10895,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "nan" + pnan_padding25);
                                     assert(ios.width() == 0);
                                 }
@@ -10903,7 +10903,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_padding25 + pnan_sign + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10911,7 +10911,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + pnan_padding25 + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10921,7 +10921,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10929,7 +10929,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "nan" + pnan_padding25);
                                     assert(ios.width() == 0);
                                 }
@@ -10937,7 +10937,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_padding25 + pnan_sign + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10945,7 +10945,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + pnan_padding25 + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10958,7 +10958,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10966,7 +10966,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "nan" + pnan_padding25);
                                     assert(ios.width() == 0);
                                 }
@@ -10974,7 +10974,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_padding25 + pnan_sign + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10982,7 +10982,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + pnan_padding25 + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -10992,7 +10992,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -11000,7 +11000,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "nan" + pnan_padding25);
                                     assert(ios.width() == 0);
                                 }
@@ -11008,7 +11008,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_padding25 + pnan_sign + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -11016,7 +11016,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + pnan_padding25 + "nan");
                                     assert(ios.width() == 0);
                                 }
@@ -11035,7 +11035,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11043,7 +11043,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11051,7 +11051,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11059,7 +11059,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11069,7 +11069,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11077,7 +11077,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11085,7 +11085,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11093,7 +11093,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11106,7 +11106,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11114,7 +11114,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11122,7 +11122,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11130,7 +11130,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11140,7 +11140,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11148,7 +11148,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "NAN**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11156,7 +11156,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11164,7 +11164,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11180,7 +11180,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11188,7 +11188,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "NAN" + pnan_padding25);
                                     assert(ios.width() == 0);
                                 }
@@ -11196,7 +11196,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_padding25 + pnan_sign + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11204,7 +11204,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + pnan_padding25 + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11214,7 +11214,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11222,7 +11222,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "NAN" + pnan_padding25);
                                     assert(ios.width() == 0);
                                 }
@@ -11230,7 +11230,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_padding25 + pnan_sign + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11238,7 +11238,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + pnan_padding25 + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11251,7 +11251,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11259,7 +11259,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "NAN" + pnan_padding25);
                                     assert(ios.width() == 0);
                                 }
@@ -11267,7 +11267,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_padding25 + pnan_sign + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11275,7 +11275,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + pnan_padding25 + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11285,7 +11285,7 @@ void test5()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11293,7 +11293,7 @@ void test5()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + "NAN" + pnan_padding25);
                                     assert(ios.width() == 0);
                                 }
@@ -11301,7 +11301,7 @@ void test5()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_padding25 + pnan_sign + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11309,7 +11309,7 @@ void test5()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == pnan_sign + pnan_padding25 + "NAN");
                                     assert(ios.width() == 0);
                                 }
@@ -11355,7 +11355,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -11363,7 +11363,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -11371,7 +11371,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11379,7 +11379,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11389,7 +11389,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -11397,7 +11397,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -11405,7 +11405,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11413,7 +11413,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11426,7 +11426,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11434,7 +11434,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11442,7 +11442,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11450,7 +11450,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11460,7 +11460,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11468,7 +11468,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11476,7 +11476,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11484,7 +11484,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11500,7 +11500,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -11508,7 +11508,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11516,7 +11516,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -11524,7 +11524,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11534,7 +11534,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -11542,7 +11542,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11550,7 +11550,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -11558,7 +11558,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11571,7 +11571,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11579,7 +11579,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11587,7 +11587,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11595,7 +11595,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11605,7 +11605,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11613,7 +11613,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11621,7 +11621,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11629,7 +11629,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11648,7 +11648,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -11656,7 +11656,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -11664,7 +11664,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11672,7 +11672,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11682,7 +11682,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0");
                                     assert(ios.width() == 0);
                                 }
@@ -11690,7 +11690,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0************************");
                                     assert(ios.width() == 0);
                                 }
@@ -11698,7 +11698,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11706,7 +11706,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11719,7 +11719,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11727,7 +11727,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11735,7 +11735,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11743,7 +11743,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11753,7 +11753,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11761,7 +11761,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11769,7 +11769,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11777,7 +11777,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11793,7 +11793,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -11801,7 +11801,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11809,7 +11809,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -11817,7 +11817,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11827,7 +11827,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0");
                                     assert(ios.width() == 0);
                                 }
@@ -11835,7 +11835,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11843,7 +11843,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************+0");
                                     assert(ios.width() == 0);
                                 }
@@ -11851,7 +11851,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -11864,7 +11864,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11872,7 +11872,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11880,7 +11880,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11888,7 +11888,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -11898,7 +11898,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11906,7 +11906,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11914,7 +11914,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************+0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11922,7 +11922,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -11944,7 +11944,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -11952,7 +11952,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11960,7 +11960,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -11968,7 +11968,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -11978,7 +11978,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -11986,7 +11986,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -11994,7 +11994,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12002,7 +12002,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12015,7 +12015,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12023,7 +12023,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12031,7 +12031,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12039,7 +12039,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12049,7 +12049,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12057,7 +12057,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12065,7 +12065,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12073,7 +12073,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12089,7 +12089,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12097,7 +12097,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12105,7 +12105,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12113,7 +12113,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12123,7 +12123,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12131,7 +12131,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12139,7 +12139,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12147,7 +12147,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12160,7 +12160,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12168,7 +12168,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12176,7 +12176,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12184,7 +12184,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12194,7 +12194,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12202,7 +12202,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12210,7 +12210,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12218,7 +12218,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12237,7 +12237,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12245,7 +12245,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12253,7 +12253,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12261,7 +12261,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12271,7 +12271,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12279,7 +12279,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12287,7 +12287,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12295,7 +12295,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12308,7 +12308,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12316,7 +12316,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12324,7 +12324,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12332,7 +12332,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12342,7 +12342,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12350,7 +12350,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12358,7 +12358,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12366,7 +12366,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12382,7 +12382,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12390,7 +12390,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12398,7 +12398,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12406,7 +12406,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12416,7 +12416,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12424,7 +12424,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12432,7 +12432,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12440,7 +12440,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12453,7 +12453,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12461,7 +12461,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12469,7 +12469,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12477,7 +12477,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -12487,7 +12487,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12495,7 +12495,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -12503,7 +12503,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************+0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12511,7 +12511,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -12533,7 +12533,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12541,7 +12541,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12549,7 +12549,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12557,7 +12557,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12567,7 +12567,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12575,7 +12575,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12583,7 +12583,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12591,7 +12591,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12604,7 +12604,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12612,7 +12612,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12620,7 +12620,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12628,7 +12628,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12638,7 +12638,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12646,7 +12646,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12654,7 +12654,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12662,7 +12662,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12678,7 +12678,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12686,7 +12686,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12694,7 +12694,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12702,7 +12702,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12712,7 +12712,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12720,7 +12720,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12728,7 +12728,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12736,7 +12736,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12749,7 +12749,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12757,7 +12757,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12765,7 +12765,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12773,7 +12773,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12783,7 +12783,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12791,7 +12791,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12799,7 +12799,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12807,7 +12807,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12826,7 +12826,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12834,7 +12834,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12842,7 +12842,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12850,7 +12850,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12860,7 +12860,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12868,7 +12868,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12876,7 +12876,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12884,7 +12884,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12897,7 +12897,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12905,7 +12905,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12913,7 +12913,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12921,7 +12921,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12931,7 +12931,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12939,7 +12939,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12947,7 +12947,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12955,7 +12955,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12971,7 +12971,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12979,7 +12979,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -12987,7 +12987,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -12995,7 +12995,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13005,7 +13005,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13013,7 +13013,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13021,7 +13021,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13029,7 +13029,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13042,7 +13042,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13050,7 +13050,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13058,7 +13058,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13066,7 +13066,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13076,7 +13076,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13084,7 +13084,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -13092,7 +13092,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************+0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13100,7 +13100,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13122,7 +13122,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13130,7 +13130,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -13138,7 +13138,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13146,7 +13146,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13156,7 +13156,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13164,7 +13164,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -13172,7 +13172,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13180,7 +13180,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13193,7 +13193,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13201,7 +13201,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -13209,7 +13209,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13217,7 +13217,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13227,7 +13227,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13235,7 +13235,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -13243,7 +13243,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13251,7 +13251,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13267,7 +13267,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13275,7 +13275,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -13283,7 +13283,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13291,7 +13291,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13301,7 +13301,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13309,7 +13309,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -13317,7 +13317,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13325,7 +13325,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13338,7 +13338,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13346,7 +13346,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -13354,7 +13354,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13362,7 +13362,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13372,7 +13372,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13380,7 +13380,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -13388,7 +13388,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13396,7 +13396,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13415,7 +13415,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13423,7 +13423,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -13431,7 +13431,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13439,7 +13439,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13449,7 +13449,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13457,7 +13457,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -13465,7 +13465,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13473,7 +13473,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13486,7 +13486,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13494,7 +13494,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -13502,7 +13502,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13510,7 +13510,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13520,7 +13520,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13528,7 +13528,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;0000000000000000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -13536,7 +13536,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13544,7 +13544,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13560,7 +13560,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13568,7 +13568,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -13576,7 +13576,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13584,7 +13584,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13594,7 +13594,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13602,7 +13602,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -13610,7 +13610,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13618,7 +13618,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13631,7 +13631,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13639,7 +13639,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -13647,7 +13647,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13655,7 +13655,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13665,7 +13665,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13673,7 +13673,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -13681,7 +13681,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******+0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13689,7 +13689,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13711,7 +13711,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13719,7 +13719,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13727,7 +13727,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13735,7 +13735,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13745,7 +13745,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13753,7 +13753,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13761,7 +13761,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13769,7 +13769,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13782,7 +13782,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13790,7 +13790,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13798,7 +13798,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13806,7 +13806,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13816,7 +13816,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13824,7 +13824,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13832,7 +13832,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13840,7 +13840,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13856,7 +13856,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13864,7 +13864,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13872,7 +13872,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13880,7 +13880,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13890,7 +13890,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13898,7 +13898,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13906,7 +13906,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13914,7 +13914,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13927,7 +13927,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13935,7 +13935,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13943,7 +13943,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13951,7 +13951,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13961,7 +13961,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13969,7 +13969,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13977,7 +13977,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -13985,7 +13985,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14004,7 +14004,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14012,7 +14012,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14020,7 +14020,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14028,7 +14028,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14038,7 +14038,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14046,7 +14046,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14054,7 +14054,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14062,7 +14062,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14075,7 +14075,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14083,7 +14083,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14091,7 +14091,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14099,7 +14099,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14109,7 +14109,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14117,7 +14117,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14125,7 +14125,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14133,7 +14133,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14149,7 +14149,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14157,7 +14157,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14165,7 +14165,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14173,7 +14173,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14183,7 +14183,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14191,7 +14191,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14199,7 +14199,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14207,7 +14207,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14220,7 +14220,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14228,7 +14228,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14236,7 +14236,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14244,7 +14244,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14254,7 +14254,7 @@ void test6()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14262,7 +14262,7 @@ void test6()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14270,7 +14270,7 @@ void test6()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14278,7 +14278,7 @@ void test6()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -14316,7 +14316,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14324,7 +14324,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14332,7 +14332,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14340,7 +14340,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -14350,7 +14350,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14358,7 +14358,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14366,7 +14366,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14374,7 +14374,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -14387,7 +14387,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14395,7 +14395,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14403,7 +14403,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14411,7 +14411,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14421,7 +14421,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14429,7 +14429,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14437,7 +14437,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14445,7 +14445,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14461,7 +14461,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14469,7 +14469,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14477,7 +14477,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14485,7 +14485,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -14495,7 +14495,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14503,7 +14503,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14511,7 +14511,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14519,7 +14519,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -14532,7 +14532,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14540,7 +14540,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14548,7 +14548,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14556,7 +14556,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14566,7 +14566,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14574,7 +14574,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14582,7 +14582,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14590,7 +14590,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14609,7 +14609,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14617,7 +14617,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14625,7 +14625,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14633,7 +14633,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -14643,7 +14643,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14651,7 +14651,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14659,7 +14659,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14667,7 +14667,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -14680,7 +14680,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14688,7 +14688,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14696,7 +14696,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14704,7 +14704,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14714,7 +14714,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14722,7 +14722,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14730,7 +14730,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14738,7 +14738,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14754,7 +14754,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14762,7 +14762,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14770,7 +14770,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14778,7 +14778,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -14788,7 +14788,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14796,7 +14796,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0***********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14804,7 +14804,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********************-0");
                                     assert(ios.width() == 0);
                                 }
@@ -14812,7 +14812,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-***********************0");
                                     assert(ios.width() == 0);
                                 }
@@ -14825,7 +14825,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14833,7 +14833,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14841,7 +14841,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14849,7 +14849,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0.");
                                     assert(ios.width() == 0);
                                 }
@@ -14859,7 +14859,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14867,7 +14867,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;**********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14875,7 +14875,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********************-0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14883,7 +14883,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-**********************0;");
                                     assert(ios.width() == 0);
                                 }
@@ -14905,7 +14905,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -14913,7 +14913,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14921,7 +14921,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -14929,7 +14929,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -14939,7 +14939,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -14947,7 +14947,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14955,7 +14955,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -14963,7 +14963,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -14976,7 +14976,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -14984,7 +14984,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -14992,7 +14992,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15000,7 +15000,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15010,7 +15010,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15018,7 +15018,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15026,7 +15026,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15034,7 +15034,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15050,7 +15050,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15058,7 +15058,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15066,7 +15066,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15074,7 +15074,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15084,7 +15084,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15092,7 +15092,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15100,7 +15100,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15108,7 +15108,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15121,7 +15121,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15129,7 +15129,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15137,7 +15137,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15145,7 +15145,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15155,7 +15155,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15163,7 +15163,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15171,7 +15171,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15179,7 +15179,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15198,7 +15198,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15206,7 +15206,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15214,7 +15214,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15222,7 +15222,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15232,7 +15232,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15240,7 +15240,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15248,7 +15248,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15256,7 +15256,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15269,7 +15269,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15277,7 +15277,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15285,7 +15285,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15293,7 +15293,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15303,7 +15303,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15311,7 +15311,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15319,7 +15319,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15327,7 +15327,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15343,7 +15343,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15351,7 +15351,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15359,7 +15359,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15367,7 +15367,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15377,7 +15377,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15385,7 +15385,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15393,7 +15393,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15401,7 +15401,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15414,7 +15414,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15422,7 +15422,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15430,7 +15430,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15438,7 +15438,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0.0");
                                     assert(ios.width() == 0);
                                 }
@@ -15448,7 +15448,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15456,7 +15456,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0*********************");
                                     assert(ios.width() == 0);
                                 }
@@ -15464,7 +15464,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********************-0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15472,7 +15472,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*********************0;0");
                                     assert(ios.width() == 0);
                                 }
@@ -15494,7 +15494,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15502,7 +15502,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15510,7 +15510,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15518,7 +15518,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15528,7 +15528,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15536,7 +15536,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15544,7 +15544,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15552,7 +15552,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15565,7 +15565,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15573,7 +15573,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15581,7 +15581,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15589,7 +15589,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15599,7 +15599,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15607,7 +15607,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15615,7 +15615,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15623,7 +15623,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15639,7 +15639,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15647,7 +15647,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15655,7 +15655,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15663,7 +15663,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15673,7 +15673,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15681,7 +15681,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15689,7 +15689,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15697,7 +15697,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15710,7 +15710,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15718,7 +15718,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15726,7 +15726,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15734,7 +15734,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15744,7 +15744,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15752,7 +15752,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15760,7 +15760,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15768,7 +15768,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15787,7 +15787,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15795,7 +15795,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15803,7 +15803,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15811,7 +15811,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15821,7 +15821,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15829,7 +15829,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15837,7 +15837,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15845,7 +15845,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15858,7 +15858,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15866,7 +15866,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15874,7 +15874,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15882,7 +15882,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15892,7 +15892,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15900,7 +15900,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15908,7 +15908,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15916,7 +15916,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15932,7 +15932,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15940,7 +15940,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15948,7 +15948,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15956,7 +15956,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15966,7 +15966,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15974,7 +15974,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -15982,7 +15982,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -15990,7 +15990,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16003,7 +16003,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16011,7 +16011,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -16019,7 +16019,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16027,7 +16027,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0.000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16037,7 +16037,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16045,7 +16045,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000****************");
                                     assert(ios.width() == 0);
                                 }
@@ -16053,7 +16053,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****************-0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16061,7 +16061,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-****************0;000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16083,7 +16083,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16091,7 +16091,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16099,7 +16099,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16107,7 +16107,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16117,7 +16117,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16125,7 +16125,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16133,7 +16133,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16141,7 +16141,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16154,7 +16154,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16162,7 +16162,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16170,7 +16170,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16178,7 +16178,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16188,7 +16188,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16196,7 +16196,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16204,7 +16204,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16212,7 +16212,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16228,7 +16228,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16236,7 +16236,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16244,7 +16244,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16252,7 +16252,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16262,7 +16262,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16270,7 +16270,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16278,7 +16278,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16286,7 +16286,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16299,7 +16299,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16307,7 +16307,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16315,7 +16315,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16323,7 +16323,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16333,7 +16333,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16341,7 +16341,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16349,7 +16349,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16357,7 +16357,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16376,7 +16376,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16384,7 +16384,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16392,7 +16392,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16400,7 +16400,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16410,7 +16410,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16418,7 +16418,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16426,7 +16426,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16434,7 +16434,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16447,7 +16447,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16455,7 +16455,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16463,7 +16463,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16471,7 +16471,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16481,7 +16481,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16489,7 +16489,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16497,7 +16497,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16505,7 +16505,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16521,7 +16521,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16529,7 +16529,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16537,7 +16537,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16545,7 +16545,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16555,7 +16555,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16563,7 +16563,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16571,7 +16571,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16579,7 +16579,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16592,7 +16592,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16600,7 +16600,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16608,7 +16608,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16616,7 +16616,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0.0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16626,7 +16626,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16634,7 +16634,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0000000000000000******");
                                     assert(ios.width() == 0);
                                 }
@@ -16642,7 +16642,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******-0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16650,7 +16650,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******0;0000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16672,7 +16672,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16680,7 +16680,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16688,7 +16688,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16696,7 +16696,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16706,7 +16706,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16714,7 +16714,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16722,7 +16722,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16730,7 +16730,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16743,7 +16743,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16751,7 +16751,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16759,7 +16759,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16767,7 +16767,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16777,7 +16777,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16785,7 +16785,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16793,7 +16793,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16801,7 +16801,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16817,7 +16817,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16825,7 +16825,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16833,7 +16833,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16841,7 +16841,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16851,7 +16851,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16859,7 +16859,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16867,7 +16867,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16875,7 +16875,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16888,7 +16888,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16896,7 +16896,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16904,7 +16904,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16912,7 +16912,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16922,7 +16922,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16930,7 +16930,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16938,7 +16938,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16946,7 +16946,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16965,7 +16965,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16973,7 +16973,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16981,7 +16981,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16989,7 +16989,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -16999,7 +16999,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17007,7 +17007,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17015,7 +17015,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17023,7 +17023,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17036,7 +17036,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17044,7 +17044,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17052,7 +17052,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17060,7 +17060,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17070,7 +17070,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17078,7 +17078,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17086,7 +17086,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17094,7 +17094,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17110,7 +17110,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17118,7 +17118,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17126,7 +17126,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17134,7 +17134,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17144,7 +17144,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17152,7 +17152,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17160,7 +17160,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17168,7 +17168,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17181,7 +17181,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17189,7 +17189,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17197,7 +17197,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17205,7 +17205,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17215,7 +17215,7 @@ void test7()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17223,7 +17223,7 @@ void test7()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17231,7 +17231,7 @@ void test7()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17239,7 +17239,7 @@ void test7()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000000000000000000000000000000000000000000000000000000000");
                                     assert(ios.width() == 0);
                                 }
@@ -17277,7 +17277,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17285,7 +17285,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890***************");
                                     assert(ios.width() == 0);
                                 }
@@ -17293,7 +17293,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17301,7 +17301,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17311,7 +17311,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17319,7 +17319,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0***********");
                                     assert(ios.width() == 0);
                                 }
@@ -17327,7 +17327,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17335,7 +17335,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17348,7 +17348,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17356,7 +17356,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.**************");
                                     assert(ios.width() == 0);
                                 }
@@ -17364,7 +17364,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17372,7 +17372,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17382,7 +17382,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17390,7 +17390,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;**********");
                                     assert(ios.width() == 0);
                                 }
@@ -17398,7 +17398,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17406,7 +17406,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17422,7 +17422,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17430,7 +17430,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890**************");
                                     assert(ios.width() == 0);
                                 }
@@ -17438,7 +17438,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************+1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17446,7 +17446,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17456,7 +17456,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17464,7 +17464,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0**********");
                                     assert(ios.width() == 0);
                                 }
@@ -17472,7 +17472,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17480,7 +17480,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17493,7 +17493,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17501,7 +17501,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.*************");
                                     assert(ios.width() == 0);
                                 }
@@ -17509,7 +17509,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17517,7 +17517,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17527,7 +17527,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17535,7 +17535,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;*********");
                                     assert(ios.width() == 0);
                                 }
@@ -17543,7 +17543,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********+1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17551,7 +17551,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17570,7 +17570,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17578,7 +17578,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890***************");
                                     assert(ios.width() == 0);
                                 }
@@ -17586,7 +17586,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17594,7 +17594,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17604,7 +17604,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17612,7 +17612,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0***********");
                                     assert(ios.width() == 0);
                                 }
@@ -17620,7 +17620,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17628,7 +17628,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17641,7 +17641,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17649,7 +17649,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.**************");
                                     assert(ios.width() == 0);
                                 }
@@ -17657,7 +17657,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17665,7 +17665,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17675,7 +17675,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17683,7 +17683,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;**********");
                                     assert(ios.width() == 0);
                                 }
@@ -17691,7 +17691,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17699,7 +17699,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17715,7 +17715,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17723,7 +17723,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890**************");
                                     assert(ios.width() == 0);
                                 }
@@ -17731,7 +17731,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**************+1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17739,7 +17739,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**************1234567890");
                                     assert(ios.width() == 0);
                                 }
@@ -17749,7 +17749,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17757,7 +17757,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0**********");
                                     assert(ios.width() == 0);
                                 }
@@ -17765,7 +17765,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "**********+1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17773,7 +17773,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+**********1_234_567_89_0");
                                     assert(ios.width() == 0);
                                 }
@@ -17786,7 +17786,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17794,7 +17794,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.*************");
                                     assert(ios.width() == 0);
                                 }
@@ -17802,7 +17802,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************+1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17810,7 +17810,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*************1234567890.");
                                     assert(ios.width() == 0);
                                 }
@@ -17820,7 +17820,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17828,7 +17828,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;*********");
                                     assert(ios.width() == 0);
                                 }
@@ -17836,7 +17836,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********+1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17844,7 +17844,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*********1_234_567_89_0;");
                                     assert(ios.width() == 0);
                                 }
@@ -17866,7 +17866,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -17874,7 +17874,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
                                 }
@@ -17882,7 +17882,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -17890,7 +17890,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -17900,7 +17900,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -17908,7 +17908,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
                                 }
@@ -17916,7 +17916,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -17924,7 +17924,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -17937,7 +17937,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -17945,7 +17945,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
                                 }
@@ -17953,7 +17953,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -17961,7 +17961,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -17971,7 +17971,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -17979,7 +17979,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
                                 }
@@ -17987,7 +17987,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -17995,7 +17995,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18011,7 +18011,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18019,7 +18019,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
                                 }
@@ -18027,7 +18027,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18035,7 +18035,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18045,7 +18045,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18053,7 +18053,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
                                 }
@@ -18061,7 +18061,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18069,7 +18069,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18082,7 +18082,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18090,7 +18090,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
                                 }
@@ -18098,7 +18098,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18106,7 +18106,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18116,7 +18116,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18124,7 +18124,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
                                 }
@@ -18132,7 +18132,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18140,7 +18140,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18159,7 +18159,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18167,7 +18167,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
                                 }
@@ -18175,7 +18175,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18183,7 +18183,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18193,7 +18193,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18201,7 +18201,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
                                 }
@@ -18209,7 +18209,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18217,7 +18217,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18230,7 +18230,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18238,7 +18238,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.1*************");
                                     assert(ios.width() == 0);
                                 }
@@ -18246,7 +18246,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18254,7 +18254,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18264,7 +18264,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18272,7 +18272,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;1*********");
                                     assert(ios.width() == 0);
                                 }
@@ -18280,7 +18280,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18288,7 +18288,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18304,7 +18304,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18312,7 +18312,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
                                 }
@@ -18320,7 +18320,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18328,7 +18328,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18338,7 +18338,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18346,7 +18346,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
                                 }
@@ -18354,7 +18354,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18362,7 +18362,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18375,7 +18375,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18383,7 +18383,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.1************");
                                     assert(ios.width() == 0);
                                 }
@@ -18391,7 +18391,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************+1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18399,7 +18399,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+************1234567890.1");
                                     assert(ios.width() == 0);
                                 }
@@ -18409,7 +18409,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18417,7 +18417,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;1********");
                                     assert(ios.width() == 0);
                                 }
@@ -18425,7 +18425,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********+1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18433,7 +18433,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+********1_234_567_89_0;1");
                                     assert(ios.width() == 0);
                                 }
@@ -18455,7 +18455,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18463,7 +18463,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -18471,7 +18471,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18479,7 +18479,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18489,7 +18489,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18497,7 +18497,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -18505,7 +18505,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18513,7 +18513,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18526,7 +18526,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18534,7 +18534,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -18542,7 +18542,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18550,7 +18550,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18560,7 +18560,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18568,7 +18568,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -18576,7 +18576,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18584,7 +18584,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18600,7 +18600,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18608,7 +18608,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -18616,7 +18616,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18624,7 +18624,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18634,7 +18634,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18642,7 +18642,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -18650,7 +18650,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18658,7 +18658,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18671,7 +18671,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18679,7 +18679,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -18687,7 +18687,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18695,7 +18695,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18705,7 +18705,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18713,7 +18713,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -18721,7 +18721,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18729,7 +18729,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18748,7 +18748,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18756,7 +18756,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -18764,7 +18764,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18772,7 +18772,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18782,7 +18782,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18790,7 +18790,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -18798,7 +18798,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18806,7 +18806,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18819,7 +18819,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18827,7 +18827,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1234567890.125000********");
                                     assert(ios.width() == 0);
                                 }
@@ -18835,7 +18835,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18843,7 +18843,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18853,7 +18853,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18861,7 +18861,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1_234_567_89_0;125000****");
                                     assert(ios.width() == 0);
                                 }
@@ -18869,7 +18869,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18877,7 +18877,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "****1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18893,7 +18893,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18901,7 +18901,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -18909,7 +18909,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18917,7 +18917,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18927,7 +18927,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18935,7 +18935,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -18943,7 +18943,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18951,7 +18951,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18964,7 +18964,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18972,7 +18972,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1234567890.125000*******");
                                     assert(ios.width() == 0);
                                 }
@@ -18980,7 +18980,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******+1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18988,7 +18988,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******1234567890.125000");
                                     assert(ios.width() == 0);
                                 }
@@ -18998,7 +18998,7 @@ void test8()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -19006,7 +19006,7 @@ void test8()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1_234_567_89_0;125000***");
                                     assert(ios.width() == 0);
                                 }
@@ -19014,7 +19014,7 @@ void test8()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "***+1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -19022,7 +19022,7 @@ void test8()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+***1_234_567_89_0;125000");
                                     assert(ios.width() == 0);
                                 }
@@ -19064,7 +19064,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19072,7 +19072,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19080,7 +19080,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19088,7 +19088,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19098,7 +19098,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19106,7 +19106,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19114,7 +19114,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19122,7 +19122,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19135,7 +19135,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19143,7 +19143,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.e+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19151,7 +19151,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19159,7 +19159,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19169,7 +19169,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19177,7 +19177,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;e+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19185,7 +19185,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19193,7 +19193,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19209,7 +19209,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19217,7 +19217,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19225,7 +19225,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19233,7 +19233,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19243,7 +19243,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19251,7 +19251,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0e+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19259,7 +19259,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19267,7 +19267,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19280,7 +19280,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19288,7 +19288,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.e+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19296,7 +19296,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19304,7 +19304,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0.e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19314,7 +19314,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19322,7 +19322,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;e+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19330,7 +19330,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19338,7 +19338,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0;e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19357,7 +19357,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19365,7 +19365,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19373,7 +19373,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19381,7 +19381,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19391,7 +19391,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19399,7 +19399,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19407,7 +19407,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19415,7 +19415,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19428,7 +19428,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19436,7 +19436,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.E+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19444,7 +19444,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19452,7 +19452,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19462,7 +19462,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19470,7 +19470,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;E+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19478,7 +19478,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19486,7 +19486,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19502,7 +19502,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19510,7 +19510,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19518,7 +19518,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19526,7 +19526,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19536,7 +19536,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19544,7 +19544,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0E+00*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19552,7 +19552,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************-0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19560,7 +19560,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*******************0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19573,7 +19573,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19581,7 +19581,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.E+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19589,7 +19589,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19597,7 +19597,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0.E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19607,7 +19607,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19615,7 +19615,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;E+00******************");
                                     assert(ios.width() == 0);
                                 }
@@ -19623,7 +19623,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************-0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19631,7 +19631,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-******************0;E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19653,7 +19653,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19661,7 +19661,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -19669,7 +19669,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19677,7 +19677,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19687,7 +19687,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19695,7 +19695,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -19703,7 +19703,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19711,7 +19711,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19724,7 +19724,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19732,7 +19732,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -19740,7 +19740,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19748,7 +19748,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19758,7 +19758,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19766,7 +19766,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -19774,7 +19774,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19782,7 +19782,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19798,7 +19798,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19806,7 +19806,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -19814,7 +19814,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19822,7 +19822,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19832,7 +19832,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19840,7 +19840,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -19848,7 +19848,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19856,7 +19856,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19869,7 +19869,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19877,7 +19877,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -19885,7 +19885,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19893,7 +19893,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19903,7 +19903,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19911,7 +19911,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0e+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -19919,7 +19919,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19927,7 +19927,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19946,7 +19946,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19954,7 +19954,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -19962,7 +19962,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19970,7 +19970,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19980,7 +19980,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -19988,7 +19988,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -19996,7 +19996,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20004,7 +20004,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20017,7 +20017,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20025,7 +20025,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -20033,7 +20033,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20041,7 +20041,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20051,7 +20051,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20059,7 +20059,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -20067,7 +20067,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20075,7 +20075,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20091,7 +20091,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20099,7 +20099,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -20107,7 +20107,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20115,7 +20115,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20125,7 +20125,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20133,7 +20133,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -20141,7 +20141,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20149,7 +20149,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20162,7 +20162,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20170,7 +20170,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -20178,7 +20178,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20186,7 +20186,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0.0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20196,7 +20196,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20204,7 +20204,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;0E+00*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -20212,7 +20212,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************-0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20220,7 +20220,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-*****************0;0E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20242,7 +20242,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20250,7 +20250,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20258,7 +20258,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20266,7 +20266,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20276,7 +20276,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20284,7 +20284,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20292,7 +20292,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20300,7 +20300,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20313,7 +20313,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20321,7 +20321,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20329,7 +20329,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20337,7 +20337,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20347,7 +20347,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20355,7 +20355,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20363,7 +20363,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20371,7 +20371,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20387,7 +20387,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20395,7 +20395,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20403,7 +20403,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20411,7 +20411,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20421,7 +20421,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20429,7 +20429,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20437,7 +20437,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20445,7 +20445,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20458,7 +20458,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20466,7 +20466,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20474,7 +20474,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20482,7 +20482,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20492,7 +20492,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20500,7 +20500,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000e+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20508,7 +20508,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20516,7 +20516,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000e+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20535,7 +20535,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20543,7 +20543,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20551,7 +20551,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20559,7 +20559,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20569,7 +20569,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20577,7 +20577,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20585,7 +20585,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20593,7 +20593,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20606,7 +20606,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20614,7 +20614,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20622,7 +20622,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20630,7 +20630,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20640,7 +20640,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20648,7 +20648,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20656,7 +20656,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20664,7 +20664,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20680,7 +20680,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20688,7 +20688,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20696,7 +20696,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20704,7 +20704,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20714,7 +20714,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20722,7 +20722,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20730,7 +20730,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20738,7 +20738,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20751,7 +20751,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20759,7 +20759,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0.000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20767,7 +20767,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20775,7 +20775,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0.000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20785,7 +20785,7 @@ void test9()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20793,7 +20793,7 @@ void test9()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-0;000000E+00************");
                                     assert(ios.width() == 0);
                                 }
@@ -20801,7 +20801,7 @@ void test9()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "************-0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20809,7 +20809,7 @@ void test9()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "-************0;000000E+00");
                                     assert(ios.width() == 0);
                                 }
@@ -20853,7 +20853,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20861,7 +20861,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -20869,7 +20869,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20877,7 +20877,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20887,7 +20887,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20895,7 +20895,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1e+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -20903,7 +20903,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20911,7 +20911,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20924,7 +20924,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20932,7 +20932,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -20940,7 +20940,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20948,7 +20948,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20958,7 +20958,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20966,7 +20966,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -20974,7 +20974,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20982,7 +20982,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -20998,7 +20998,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21006,7 +21006,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21014,7 +21014,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21022,7 +21022,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21032,7 +21032,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21040,7 +21040,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1e+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21048,7 +21048,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21056,7 +21056,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21069,7 +21069,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21077,7 +21077,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21085,7 +21085,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21093,7 +21093,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21103,7 +21103,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21111,7 +21111,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21119,7 +21119,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21127,7 +21127,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21146,7 +21146,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21154,7 +21154,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -21162,7 +21162,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21170,7 +21170,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21180,7 +21180,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21188,7 +21188,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1E+09********************");
                                     assert(ios.width() == 0);
                                 }
@@ -21196,7 +21196,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21204,7 +21204,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "********************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21217,7 +21217,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21225,7 +21225,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21233,7 +21233,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21241,7 +21241,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21251,7 +21251,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21259,7 +21259,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21267,7 +21267,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21275,7 +21275,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21291,7 +21291,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21299,7 +21299,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21307,7 +21307,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21315,7 +21315,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21325,7 +21325,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21333,7 +21333,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1E+09*******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21341,7 +21341,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*******************+1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21349,7 +21349,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*******************1E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21362,7 +21362,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21370,7 +21370,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21378,7 +21378,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21386,7 +21386,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1.E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21396,7 +21396,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21404,7 +21404,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21412,7 +21412,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************+1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21420,7 +21420,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+******************1;E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21442,7 +21442,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21450,7 +21450,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21458,7 +21458,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21466,7 +21466,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21476,7 +21476,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21484,7 +21484,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21492,7 +21492,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21500,7 +21500,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21513,7 +21513,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21521,7 +21521,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21529,7 +21529,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21537,7 +21537,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21547,7 +21547,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21555,7 +21555,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2e+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21563,7 +21563,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21571,7 +21571,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21587,7 +21587,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21595,7 +21595,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2e+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -21603,7 +21603,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21611,7 +21611,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21621,7 +21621,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21629,7 +21629,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2e+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -21637,7 +21637,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21645,7 +21645,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21658,7 +21658,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21666,7 +21666,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2e+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -21674,7 +21674,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21682,7 +21682,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1.2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21692,7 +21692,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21700,7 +21700,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2e+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -21708,7 +21708,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21716,7 +21716,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1;2e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21735,7 +21735,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21743,7 +21743,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21751,7 +21751,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21759,7 +21759,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21769,7 +21769,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21777,7 +21777,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21785,7 +21785,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21793,7 +21793,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21806,7 +21806,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21814,7 +21814,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.2E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21822,7 +21822,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21830,7 +21830,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21840,7 +21840,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21848,7 +21848,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;2E+09******************");
                                     assert(ios.width() == 0);
                                 }
@@ -21856,7 +21856,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21864,7 +21864,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "******************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21880,7 +21880,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21888,7 +21888,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2E+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -21896,7 +21896,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21904,7 +21904,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21914,7 +21914,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21922,7 +21922,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2E+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -21930,7 +21930,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21938,7 +21938,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21951,7 +21951,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21959,7 +21959,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.2E+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -21967,7 +21967,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21975,7 +21975,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1.2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21985,7 +21985,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -21993,7 +21993,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;2E+09*****************");
                                     assert(ios.width() == 0);
                                 }
@@ -22001,7 +22001,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "*****************+1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22009,7 +22009,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+*****************1;2E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22037,7 +22037,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22045,7 +22045,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22053,7 +22053,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22061,7 +22061,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22071,7 +22071,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22079,7 +22079,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22087,7 +22087,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22095,7 +22095,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22108,7 +22108,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22116,7 +22116,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22124,7 +22124,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22132,7 +22132,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22142,7 +22142,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22150,7 +22150,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22158,7 +22158,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22166,7 +22166,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22182,7 +22182,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22190,7 +22190,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22198,7 +22198,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22206,7 +22206,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22216,7 +22216,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22224,7 +22224,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22232,7 +22232,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22240,7 +22240,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22253,7 +22253,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22261,7 +22261,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22269,7 +22269,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22277,7 +22277,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22287,7 +22287,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22295,7 +22295,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22303,7 +22303,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22311,7 +22311,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000e+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22330,7 +22330,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22338,7 +22338,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22346,7 +22346,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22354,7 +22354,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22364,7 +22364,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22372,7 +22372,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22380,7 +22380,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22388,7 +22388,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22401,7 +22401,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22409,7 +22409,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22417,7 +22417,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22425,7 +22425,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22435,7 +22435,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22443,7 +22443,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22451,7 +22451,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22459,7 +22459,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22475,7 +22475,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22483,7 +22483,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22491,7 +22491,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22499,7 +22499,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22509,7 +22509,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22517,7 +22517,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22525,7 +22525,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22533,7 +22533,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22546,7 +22546,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22554,7 +22554,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22562,7 +22562,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22570,7 +22570,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1.234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22580,7 +22580,7 @@ void test10()
                                 ios.width(0);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22588,7 +22588,7 @@ void test10()
                                 std::left(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22596,7 +22596,7 @@ void test10()
                                 std::right(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     assert(ios.width() == 0);
                                 }
@@ -22604,7 +22604,7 @@ void test10()
                                 std::internal(ios);
                                 {
                                     cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-                                    std::string ex(str, iter.base());
+                                    std::string ex(str, base(iter));
                                     assert(ex == "+1;234567890125000000000000000000000000000000000000000000000000E+09");
                                     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 dbfb7af301db7..106474b4c56bc 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
@@ -48,7 +48,7 @@ int main(int, char**)
         long long v = 0;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0");
     }
     {
@@ -56,7 +56,7 @@ int main(int, char**)
         long long v = 1;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1");
     }
     {
@@ -64,7 +64,7 @@ int main(int, char**)
         long long v = -1;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1");
     }
     {
@@ -72,7 +72,7 @@ int main(int, char**)
         long long v = -1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1000");
     }
     {
@@ -80,7 +80,7 @@ int main(int, char**)
         long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1000");
     }
     {
@@ -89,7 +89,7 @@ int main(int, char**)
         long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "+1000");
     }
     {
@@ -98,7 +98,7 @@ int main(int, char**)
         long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1750");
     }
     {
@@ -108,7 +108,7 @@ int main(int, char**)
         long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "01750");
     }
     {
@@ -117,7 +117,7 @@ int main(int, char**)
         long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "3e8");
     }
     {
@@ -127,7 +127,7 @@ int main(int, char**)
         long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x3e8");
     }
     {
@@ -138,7 +138,7 @@ int main(int, char**)
         long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0X3E8");
     }
     {
@@ -150,7 +150,7 @@ int main(int, char**)
         long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0X3E_8");
     }
     {
@@ -161,7 +161,7 @@ int main(int, char**)
         long long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x7f_fff_ff_f");
     }
     {
@@ -171,7 +171,7 @@ int main(int, char**)
         long long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "123_46_7");
     }
     {
@@ -182,7 +182,7 @@ int main(int, char**)
         long long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0_123_46_7");
     }
     {
@@ -195,7 +195,7 @@ int main(int, char**)
         long long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "*****0_123_46_7");
     }
     {
@@ -208,7 +208,7 @@ int main(int, char**)
         long long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0_123_46_7*****");
     }
     {
@@ -221,7 +221,7 @@ int main(int, char**)
         long long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "*****0_123_46_7");
         assert(ios.width() == 0);
     }
@@ -235,7 +235,7 @@ int main(int, char**)
         long long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "**0x7f_fff_ff_f");
     }
     {
@@ -248,7 +248,7 @@ int main(int, char**)
         long long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x7f_fff_ff_f**");
     }
     {
@@ -261,7 +261,7 @@ int main(int, char**)
         long long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x**7f_fff_ff_f");
         assert(ios.width() == 0);
     }
@@ -274,7 +274,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "***+1_00_0");
         assert(ios.width() == 0);
     }
@@ -287,7 +287,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "+1_00_0***");
         assert(ios.width() == 0);
     }
@@ -300,7 +300,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "+***1_00_0");
         assert(ios.width() == 0);
     }
@@ -313,7 +313,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "***-1_00_0");
         assert(ios.width() == 0);
     }
@@ -325,7 +325,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "-1_00_0***");
         assert(ios.width() == 0);
     }
@@ -337,7 +337,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         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 c3a13746d941e..13152742d5fe3 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
@@ -37,7 +37,7 @@ int main(int, char**)
         void* v = 0;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         char expected_str[32] = {};
         // num_put::put uses %p for pointer types, but the exact format of %p is
         // implementation defined behavior for the C library. Compare output to

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 6f98de90781a0..2bb5cc30308df 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
@@ -48,7 +48,7 @@ int main(int, char**)
         unsigned long v = 0;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0");
     }
     {
@@ -56,7 +56,7 @@ int main(int, char**)
         unsigned long v = 1;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1");
     }
     {
@@ -64,7 +64,7 @@ int main(int, char**)
         unsigned long v = static_cast<unsigned long>(-1);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == (sizeof(unsigned long) == 4 ? "4294967295" : "18446744073709551615"));
     }
     {
@@ -72,7 +72,7 @@ int main(int, char**)
         unsigned long v = static_cast<unsigned long>(-1000);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == (sizeof(unsigned long) == 4 ? "4294966296" : "18446744073709550616"));
     }
     {
@@ -80,7 +80,7 @@ int main(int, char**)
         unsigned long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1000");
     }
     {
@@ -89,7 +89,7 @@ int main(int, char**)
         unsigned long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1000");
     }
     {
@@ -98,7 +98,7 @@ int main(int, char**)
         unsigned long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1750");
     }
     {
@@ -108,7 +108,7 @@ int main(int, char**)
         unsigned long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "01750");
     }
     {
@@ -117,7 +117,7 @@ int main(int, char**)
         unsigned long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "3e8");
     }
     {
@@ -127,7 +127,7 @@ int main(int, char**)
         unsigned long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x3e8");
     }
     {
@@ -138,7 +138,7 @@ int main(int, char**)
         unsigned long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0X3E8");
     }
     {
@@ -150,7 +150,7 @@ int main(int, char**)
         unsigned long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0X3E_8");
     }
     {
@@ -161,7 +161,7 @@ int main(int, char**)
         unsigned long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x7f_fff_ff_f");
     }
     {
@@ -171,7 +171,7 @@ int main(int, char**)
         unsigned long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "123_46_7");
     }
     {
@@ -182,7 +182,7 @@ int main(int, char**)
         unsigned long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0_123_46_7");
     }
     {
@@ -195,7 +195,7 @@ int main(int, char**)
         unsigned long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "*****0_123_46_7");
     }
     {
@@ -208,7 +208,7 @@ int main(int, char**)
         unsigned long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0_123_46_7*****");
     }
     {
@@ -221,7 +221,7 @@ int main(int, char**)
         unsigned long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "*****0_123_46_7");
         assert(ios.width() == 0);
     }
@@ -235,7 +235,7 @@ int main(int, char**)
         unsigned long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "**0x7f_fff_ff_f");
     }
     {
@@ -248,7 +248,7 @@ int main(int, char**)
         unsigned long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x7f_fff_ff_f**");
     }
     {
@@ -261,7 +261,7 @@ int main(int, char**)
         unsigned long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x**7f_fff_ff_f");
         assert(ios.width() == 0);
     }
@@ -274,7 +274,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "****1_00_0");
         assert(ios.width() == 0);
     }
@@ -287,7 +287,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1_00_0****");
         assert(ios.width() == 0);
     }
@@ -300,7 +300,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "****1_00_0");
         assert(ios.width() == 0);
     }
@@ -313,7 +313,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == (sizeof(unsigned long) == 4 ? "4_294_966_29_6"
                                                  : "18_446_744_073_709_550_61_6"));
         assert(ios.width() == 0);
@@ -326,7 +326,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == (sizeof(unsigned long) == 4 ? "4_294_966_29_6"
                                                  : "18_446_744_073_709_550_61_6"));
         assert(ios.width() == 0);
@@ -339,7 +339,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == (sizeof(unsigned long) == 4 ? "4_294_966_29_6"
                                                  : "18_446_744_073_709_550_61_6"));
         assert(ios.width() == 0);

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 9959b18b26875..f5956305a0d5a 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
@@ -48,7 +48,7 @@ int main(int, char**)
         unsigned long long v = 0;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0");
     }
     {
@@ -56,7 +56,7 @@ int main(int, char**)
         unsigned long long v = 1;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1");
     }
     {
@@ -64,7 +64,7 @@ int main(int, char**)
         unsigned long long v = static_cast<unsigned long long>(-1);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "18446744073709551615");
     }
     {
@@ -72,7 +72,7 @@ int main(int, char**)
         unsigned long long v = static_cast<unsigned long long>(-1000);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "18446744073709550616");
     }
     {
@@ -80,7 +80,7 @@ int main(int, char**)
         unsigned long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1000");
     }
     {
@@ -89,7 +89,7 @@ int main(int, char**)
         unsigned long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1000");
     }
     {
@@ -98,7 +98,7 @@ int main(int, char**)
         unsigned long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1750");
     }
     {
@@ -108,7 +108,7 @@ int main(int, char**)
         unsigned long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "01750");
     }
     {
@@ -117,7 +117,7 @@ int main(int, char**)
         unsigned long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "3e8");
     }
     {
@@ -127,7 +127,7 @@ int main(int, char**)
         unsigned long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x3e8");
     }
     {
@@ -138,7 +138,7 @@ int main(int, char**)
         unsigned long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0X3E8");
     }
     {
@@ -150,7 +150,7 @@ int main(int, char**)
         unsigned long long v = 1000;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0X3E_8");
     }
     {
@@ -161,7 +161,7 @@ int main(int, char**)
         unsigned long long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x7f_fff_ff_f");
     }
     {
@@ -171,7 +171,7 @@ int main(int, char**)
         unsigned long long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "123_46_7");
     }
     {
@@ -182,7 +182,7 @@ int main(int, char**)
         unsigned long long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0_123_46_7");
     }
     {
@@ -195,7 +195,7 @@ int main(int, char**)
         unsigned long long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "*****0_123_46_7");
     }
     {
@@ -208,7 +208,7 @@ int main(int, char**)
         unsigned long long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0_123_46_7*****");
     }
     {
@@ -221,7 +221,7 @@ int main(int, char**)
         unsigned long long v = 0123467;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "*****0_123_46_7");
         assert(ios.width() == 0);
     }
@@ -235,7 +235,7 @@ int main(int, char**)
         unsigned long long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "**0x7f_fff_ff_f");
     }
     {
@@ -248,7 +248,7 @@ int main(int, char**)
         unsigned long long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x7f_fff_ff_f**");
     }
     {
@@ -261,7 +261,7 @@ int main(int, char**)
         unsigned long long v = 2147483647;
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "0x**7f_fff_ff_f");
         assert(ios.width() == 0);
     }
@@ -274,7 +274,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "****1_00_0");
         assert(ios.width() == 0);
     }
@@ -287,7 +287,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "1_00_0****");
         assert(ios.width() == 0);
     }
@@ -300,7 +300,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "****1_00_0");
         assert(ios.width() == 0);
     }
@@ -313,7 +313,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "18_446_744_073_709_550_61_6");
         assert(ios.width() == 0);
     }
@@ -325,7 +325,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "18_446_744_073_709_550_61_6");
         assert(ios.width() == 0);
     }
@@ -337,7 +337,7 @@ int main(int, char**)
         ios.width(10);
         char str[50];
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', v);
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "18_446_744_073_709_550_61_6");
         assert(ios.width() == 0);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_bool.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_bool.pass.cpp
index f7193bc0d5c0a..6b8c3d7102ebf 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_bool.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_bool.pass.cpp
@@ -64,7 +64,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, b);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(b == true);
     }
@@ -76,7 +76,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, b);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(b == false);
     }
@@ -88,7 +88,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, b);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(b == true);
     }
@@ -100,7 +100,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, b);
-        assert(iter.base() == str+0);
+        assert(base(iter) == str+0);
         assert(err == ios.failbit);
         assert(b == false);
     }
@@ -113,7 +113,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, b);
-        assert(iter.base() == str+0);
+        assert(base(iter) == str+0);
         assert(err == ios.failbit);
         assert(b == false);
     }
@@ -125,7 +125,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, b);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(b == true);
     }
@@ -137,7 +137,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, b);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(b == false);
     }
@@ -150,7 +150,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+1),
                   ios, err, b);
-        assert(iter.base() == str+1);
+        assert(base(iter) == str+1);
         assert(err == ios.eofbit);
         assert(b == true);
     }
@@ -162,7 +162,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+3),
                   ios, err, b);
-        assert(iter.base() == str+2);
+        assert(base(iter) == str+2);
         assert(err == ios.failbit);
         assert(b == false);
     }
@@ -174,7 +174,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+3),
                   ios, err, b);
-        assert(iter.base() == str+1);
+        assert(base(iter) == str+1);
         assert(err == ios.goodbit);
         assert(b == true);
     }
@@ -187,7 +187,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+1),
                   ios, err, b);
-        assert(iter.base() == str+1);
+        assert(base(iter) == str+1);
         assert(err == ios.eofbit);
         assert(b == true);
     }
@@ -199,7 +199,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+2),
                   ios, err, b);
-        assert(iter.base() == str+2);
+        assert(base(iter) == str+2);
         assert(err == ios.eofbit);
         assert(b == false);
     }
@@ -211,7 +211,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+3),
                   ios, err, b);
-        assert(iter.base() == str+2);
+        assert(base(iter) == str+2);
         assert(err == ios.goodbit);
         assert(b == false);
     }
@@ -223,7 +223,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+2),
                   ios, err, b);
-        assert(iter.base() == str+1);
+        assert(base(iter) == str+1);
         assert(err == ios.goodbit);
         assert(b == true);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp
index 48e0fed4f3b38..c802ab787682a 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp
@@ -58,7 +58,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123);
     }
@@ -69,7 +69,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -123);
     }
@@ -80,7 +80,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123.5);
     }
@@ -92,7 +92,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 125e-1);
     }
@@ -104,7 +104,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == hexfloat<double>(0x125, 0, -1));
     }
@@ -116,7 +116,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == INFINITY);
     }
@@ -128,7 +128,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == INFINITY);
     }
@@ -140,7 +140,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -INFINITY);
     }
@@ -152,7 +152,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -INFINITY);
     }
@@ -164,7 +164,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(std::isnan(v));
     }
@@ -176,7 +176,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(std::isnan(v));
     }
@@ -188,7 +188,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+3);
+        assert(base(iter) == str+3);
         assert(err == ios.goodbit);
         assert(v == 123);
     }
@@ -201,7 +201,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+1);
+        assert(base(iter) == str+1);
         assert(err == ios.goodbit);
         assert(v == 2);
     }
@@ -213,7 +213,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == HUGE_VAL);
     }
@@ -225,7 +225,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == -HUGE_VAL);
     }
@@ -238,7 +238,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123456789.125);
     }
@@ -260,7 +260,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
     }
     {
@@ -272,7 +272,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(std::abs(v - 3.14159265358979e+10)/3.14159265358979e+10 < 1.e-8);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp
index 475cc448aeda3..79c8480d0699b 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp
@@ -47,7 +47,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123);
     }
@@ -58,7 +58,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -123);
     }
@@ -69,7 +69,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123.5);
     }
@@ -81,7 +81,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 125e-1);
     }
@@ -93,7 +93,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == hexfloat<float>(0x125, 0, -1));
     }
@@ -105,7 +105,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == INFINITY);
     }
@@ -117,7 +117,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == INFINITY);
     }
@@ -129,7 +129,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -INFINITY);
     }
@@ -141,7 +141,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -INFINITY);
     }
@@ -153,7 +153,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(std::isnan(v));
     }
@@ -165,7 +165,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(std::isnan(v));
     }
@@ -177,7 +177,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == HUGE_VALF);
     }
@@ -189,7 +189,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == -HUGE_VALF);
 
@@ -202,7 +202,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+1);
+        assert(base(iter) == str+1);
         assert(err == ios.goodbit);
         assert(v == 2);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long.pass.cpp
index 9fb6f1bf63908..45270d1c620fc 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long.pass.cpp
@@ -61,7 +61,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+3);
+        assert(base(iter) == str+3);
         assert(err == ios.goodbit);
         assert(v == 123);
     }
@@ -74,7 +74,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+4);
+        assert(base(iter) == str+4);
         assert(err == ios.goodbit);
         assert(v == -123);
     }
@@ -86,7 +86,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+3);
+        assert(base(iter) == str+3);
         assert(err == ios.goodbit);
         assert(v == 83);
     }
@@ -98,7 +98,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+3);
+        assert(base(iter) == str+3);
         assert(err == ios.goodbit);
         assert(v == 291);
     }
@@ -110,7 +110,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 291);
     }
@@ -122,7 +122,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123);
     }
@@ -134,7 +134,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 291);
     }
@@ -146,7 +146,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 83);
     }
@@ -159,7 +159,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+1);
+        assert(base(iter) == str+1);
         assert(err == ios.goodbit);
         assert(v == 2);
     }
@@ -173,7 +173,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123);
     }
@@ -185,7 +185,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 1);
     }
@@ -197,7 +197,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1);
     }
@@ -209,7 +209,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1);
     }
@@ -221,7 +221,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1);
     }
@@ -233,7 +233,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1);
     }
@@ -245,7 +245,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1);
     }
@@ -257,7 +257,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1);
     }
@@ -269,7 +269,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1);
     }
@@ -281,7 +281,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1);
     }
@@ -293,7 +293,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1);
     }
@@ -305,7 +305,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 12);
     }
@@ -317,7 +317,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 12);
     }
@@ -329,7 +329,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 12);
     }
@@ -341,7 +341,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 12);
     }
@@ -353,7 +353,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123);
     }
@@ -365,7 +365,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 123);
     }
@@ -377,7 +377,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 1234);
     }
@@ -389,7 +389,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1234);
     }
@@ -401,7 +401,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1234);
     }
@@ -413,7 +413,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 12345);
     }
@@ -425,7 +425,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123456);
     }
@@ -437,7 +437,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 123456);
     }
@@ -449,7 +449,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 1234567);
     }
@@ -461,7 +461,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 1234567890);
     }
@@ -473,7 +473,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -1234567890);
     }
@@ -485,7 +485,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 1234567890);
     }
@@ -497,7 +497,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 1234567890);
     }
@@ -519,7 +519,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == std::numeric_limits<long>::max());
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp
index 0e18c5b89f058..e2b2aeafd1ef9 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp
@@ -47,7 +47,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123);
     }
@@ -58,7 +58,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -123);
     }
@@ -69,7 +69,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 123.5);
     }
@@ -81,7 +81,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 125e-1);
     }
@@ -93,7 +93,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == hexfloat<long double>(0x125, 0, -1));
     }
@@ -105,7 +105,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == INFINITY);
     }
@@ -117,7 +117,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == INFINITY);
     }
@@ -129,7 +129,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -INFINITY);
     }
@@ -141,7 +141,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -INFINITY);
     }
@@ -153,7 +153,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(std::isnan(v));
     }
@@ -165,7 +165,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(std::isnan(v));
     }
@@ -177,7 +177,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == INFINITY);
     }
@@ -189,7 +189,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == INFINITY);
     }
@@ -201,7 +201,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == INFINITY);
     }
@@ -213,7 +213,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == INFINITY);
     }
@@ -225,7 +225,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err != ios.failbit);
         assert(v == 304888344611713860501504000000.0L);
     }
@@ -237,7 +237,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == HUGE_VALL);
     }
@@ -249,7 +249,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == -HUGE_VALL);
     }
@@ -261,7 +261,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+1);
+        assert(base(iter) == str+1);
         assert(err == ios.goodbit);
         assert(v == 2);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_long.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_long.pass.cpp
index f91afed8f9b9a..98ad21f91ff51 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_long.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_long.pass.cpp
@@ -53,7 +53,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 0);
     }
@@ -64,7 +64,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 1);
     }
@@ -75,7 +75,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == -1);
     }
@@ -87,7 +87,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 0x7FFFFFFFFFFFFFFFLL);
     }
@@ -98,7 +98,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         const long long expect = 0x8000000000000000LL;
         assert(v == expect);

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_pointer.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_pointer.pass.cpp
index 6cef269ff86ea..4819e07ebc6f1 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_pointer.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_pointer.pass.cpp
@@ -42,7 +42,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, p);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(p == 0);
     }
@@ -54,7 +54,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, p);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(p == (void*)0x73);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_int.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_int.pass.cpp
index cf0594a564ba0..bee1be08baafc 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_int.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_int.pass.cpp
@@ -53,7 +53,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 0);
     }
@@ -64,7 +64,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 1);
     }
@@ -76,7 +76,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 0xFFFFFFFF);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long.pass.cpp
index 0c01a6e52ab43..b087bdcd94017 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long.pass.cpp
@@ -53,7 +53,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 0);
     }
@@ -64,7 +64,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 1);
     }
@@ -76,7 +76,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 0xFFFFFFFF);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long_long.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long_long.pass.cpp
index f719a31409d18..6769aebe424e3 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long_long.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long_long.pass.cpp
@@ -53,7 +53,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 0);
     }
@@ -64,7 +64,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 1);
     }
@@ -76,7 +76,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 0xFFFFFFFFFFFFFFFFULL);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_short.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_short.pass.cpp
index 808bb0ff56ada..bec9a7ff9e3bb 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_short.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_short.pass.cpp
@@ -53,7 +53,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 0);
     }
@@ -64,7 +64,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 1);
     }
@@ -76,7 +76,7 @@ int main(int, char**)
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == 0xFFFF);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/test_neg_one.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/test_neg_one.pass.cpp
index f69e579cd2b1b..2fa6653c42d3e 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/test_neg_one.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/test_neg_one.pass.cpp
@@ -56,7 +56,7 @@ void test_neg_one() {
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.goodbit);
         assert(v == T(-1));
     }
@@ -68,7 +68,7 @@ void test_neg_one() {
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+sizeof(str)),
                   ios, err, v);
-        assert(iter.base() == str+sizeof(str)-1);
+        assert(base(iter) == str+sizeof(str)-1);
         assert(err == ios.failbit);
         assert(v == 0);
     }
@@ -91,7 +91,7 @@ void test_negate() {
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+size+1),
                   ios, err, v);
-        assert(iter.base() == str+size);
+        assert(base(iter) == str+size);
         assert(err == ios.goodbit);
         T expected = -value;
         assert(v == expected);
@@ -109,7 +109,7 @@ void test_negate() {
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+size+1),
                   ios, err, v);
-        assert(iter.base() == str+size);
+        assert(base(iter) == str+size);
         assert(err == ios.goodbit);
         T expected = -value;
         assert(v == expected);
@@ -125,7 +125,7 @@ void test_negate() {
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+size+1),
                   ios, err, v);
-        assert(iter.base() == str+size);
+        assert(base(iter) == str+size);
         assert(err == ios.goodbit);
         T expected = -value;
         assert(v == expected);
@@ -141,7 +141,7 @@ void test_negate() {
             f.get(cpp17_input_iterator<const char*>(str),
                   cpp17_input_iterator<const char*>(str+size+1),
                   ios, err, v);
-        assert(iter.base() == str+size);
+        assert(base(iter) == str+size);
         assert(err == ios.failbit);
         assert(v == T(-1));
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date.pass.cpp
index 4f17a019dbccf..7fe96ce5f41b1 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date.pass.cpp
@@ -55,7 +55,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(t.tm_mday == 10);
         assert(t.tm_year == 109);
@@ -71,7 +71,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(t.tm_mday == 10);
         assert(t.tm_year == 109);
@@ -83,7 +83,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(t.tm_mday == 10);
         assert(t.tm_year == 109);
@@ -96,7 +96,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(t.tm_mday == 10);
         assert(t.tm_year == 109);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp
index f7f15568e440c..94e7a686acb81 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp
@@ -57,7 +57,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(t.tm_mday == 10);
         assert(t.tm_year == 109);
@@ -73,7 +73,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(t.tm_mday == 10);
         assert(t.tm_year == 109);
@@ -85,7 +85,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(t.tm_mday == 10);
         assert(t.tm_year == 109);
@@ -97,7 +97,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(t.tm_mday == 10);
         assert(t.tm_year == 109);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp
index f2153f0c6620f..c909c5bdaa82e 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp
@@ -48,7 +48,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -58,7 +58,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -68,7 +68,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp
index bd8b7b97ac55e..87eec9c7e1ce0 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp
@@ -58,7 +58,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -68,7 +68,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -78,7 +78,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp
index 60c1e0297d2a4..968d0920df20e 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp
@@ -59,7 +59,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -81,7 +81,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -99,7 +99,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -117,7 +117,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -142,7 +142,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -160,7 +160,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -182,7 +182,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -204,7 +204,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp
index 3aac42048ee41..6a48d44ad0f5b 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp
@@ -61,7 +61,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -83,7 +83,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -101,7 +101,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -119,7 +119,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -137,7 +137,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -154,7 +154,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -168,7 +168,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);
@@ -189,7 +189,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X');
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_sec == 59);
         assert(t.tm_min == 55);
         assert(t.tm_hour == 23);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time.pass.cpp
index 7545c11222cfe..aa5b0d04caa1f 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time.pass.cpp
@@ -50,7 +50,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 13);
         assert(t.tm_min == 14);
         assert(t.tm_sec == 15);
@@ -62,7 +62,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 13);
         assert(t.tm_min == 14);
         assert(t.tm_sec == 15);
@@ -74,7 +74,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 13);
         assert(t.tm_min == 14);
         assert(t.tm_sec == 15);
@@ -86,7 +86,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 13);
         assert(t.tm_min == 14);
         assert(t.tm_sec == 15);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp
index dc83f3063057e..39e3adf3f5315 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp
@@ -52,7 +52,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_hour == 13);
         assert(t.tm_min == 14);
         assert(t.tm_sec == 15);
@@ -64,7 +64,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_hour == 13);
         assert(t.tm_min == 14);
         assert(t.tm_sec == 15);
@@ -76,7 +76,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_hour == 13);
         assert(t.tm_min == 14);
         assert(t.tm_sec == 15);
@@ -88,7 +88,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_hour == 13);
         assert(t.tm_min == 14);
         assert(t.tm_sec == 15);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday.pass.cpp
index 4a452f23fcd1b..da64b573a41cd 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday.pass.cpp
@@ -49,7 +49,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -59,7 +59,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -77,7 +77,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -87,7 +87,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp
index d96e4c2c0d033..dcbef8d2aebf3 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp
@@ -54,7 +54,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -64,7 +64,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -74,7 +74,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -84,7 +84,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year.pass.cpp
index 1abb36161b2e7..ec846093583db 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year.pass.cpp
@@ -49,7 +49,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_year == 109);
         assert(err == std::ios_base::eofbit);
     }
@@ -59,7 +59,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_year == 109);
         assert(err == std::ios_base::eofbit);
     }
@@ -69,7 +69,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_year == 109);
         assert(err == std::ios_base::eofbit);
     }
@@ -79,7 +79,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_year == 109);
         assert(err == std::ios_base::eofbit);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp
index 465e0ad68b762..beb85fe11812d 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp
@@ -51,7 +51,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_year == 109);
         assert(err == std::ios_base::eofbit);
     }
@@ -61,7 +61,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_year == 109);
         assert(err == std::ios_base::eofbit);
     }
@@ -71,7 +71,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_year == 109);
         assert(err == std::ios_base::eofbit);
     }
@@ -81,7 +81,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_year == 109);
         assert(err == std::ios_base::eofbit);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date.pass.cpp
index b056df1529e1f..a6c7f7816fdc4 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date.pass.cpp
@@ -43,7 +43,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_date(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_mon == 4);
         assert(t.tm_mday == 5);
         assert(t.tm_year == 105);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp
index 91097406b98f7..2af988ce69944 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp
@@ -45,7 +45,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_mon == 4);
         assert(t.tm_mday == 5);
         assert(t.tm_year == 105);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_many.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_many.pass.cpp
index e9a84ed0310da..e8ca74ee4aa04 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_many.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_many.pass.cpp
@@ -44,7 +44,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, fmt, fmt+sizeof(fmt)-1);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 109);
         assert(t.tm_mon == 4);
         assert(t.tm_mday == 9);
@@ -58,7 +58,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, fmt, fmt+sizeof(fmt)-1);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 109);
         assert(t.tm_mon == 4);
         assert(t.tm_mday == 9);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname.pass.cpp
index 78a24984ba93d..10769f92c50db 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname.pass.cpp
@@ -42,7 +42,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -51,7 +51,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -60,7 +60,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 2);
         assert(err == std::ios_base::eofbit);
     }
@@ -69,7 +69,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 3);
         assert(err == std::ios_base::eofbit);
     }
@@ -78,7 +78,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 4);
         assert(err == std::ios_base::eofbit);
     }
@@ -87,7 +87,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -96,7 +96,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 6);
         assert(err == std::ios_base::eofbit);
     }
@@ -105,7 +105,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 7);
         assert(err == std::ios_base::eofbit);
     }
@@ -114,7 +114,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 8);
         assert(err == std::ios_base::eofbit);
     }
@@ -123,7 +123,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 9);
         assert(err == std::ios_base::eofbit);
     }
@@ -132,7 +132,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 10);
         assert(err == std::ios_base::eofbit);
     }
@@ -141,7 +141,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 11);
         assert(err == std::ios_base::eofbit);
     }
@@ -150,7 +150,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+7);
+        assert(base(i) == in+7);
         assert(t.tm_mon == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -159,7 +159,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
         assert(t.tm_mon == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -168,7 +168,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+5);
+        assert(base(i) == in+5);
         assert(t.tm_mon == 2);
         assert(err == std::ios_base::eofbit);
     }
@@ -177,7 +177,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+5);
+        assert(base(i) == in+5);
         assert(t.tm_mon == 3);
         assert(err == std::ios_base::eofbit);
     }
@@ -186,7 +186,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 4);
         assert(err == std::ios_base::eofbit);
     }
@@ -195,7 +195,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+4);
+        assert(base(i) == in+4);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -204,7 +204,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+4);
+        assert(base(i) == in+4);
         assert(t.tm_mon == 6);
         assert(err == std::ios_base::eofbit);
     }
@@ -213,7 +213,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+6);
+        assert(base(i) == in+6);
         assert(t.tm_mon == 7);
         assert(err == std::ios_base::eofbit);
     }
@@ -222,7 +222,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+9);
+        assert(base(i) == in+9);
         assert(t.tm_mon == 8);
         assert(err == std::ios_base::eofbit);
     }
@@ -231,7 +231,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+7);
+        assert(base(i) == in+7);
         assert(t.tm_mon == 9);
         assert(err == std::ios_base::eofbit);
     }
@@ -240,7 +240,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
         assert(t.tm_mon == 10);
         assert(err == std::ios_base::eofbit);
     }
@@ -249,7 +249,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
         assert(t.tm_mon == 11);
         assert(err == std::ios_base::eofbit);
     }
@@ -258,7 +258,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+5);
+        assert(base(i) == in+5);
         assert(t.tm_mon == 0);
         assert(err == std::ios_base::failbit);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp
index 261bb686e58b9..0bd4ea325cd33 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp
@@ -44,7 +44,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -53,7 +53,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -62,7 +62,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 2);
         assert(err == std::ios_base::eofbit);
     }
@@ -71,7 +71,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 3);
         assert(err == std::ios_base::eofbit);
     }
@@ -80,7 +80,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 4);
         assert(err == std::ios_base::eofbit);
     }
@@ -89,7 +89,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -98,7 +98,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 6);
         assert(err == std::ios_base::eofbit);
     }
@@ -107,7 +107,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 7);
         assert(err == std::ios_base::eofbit);
     }
@@ -116,7 +116,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 8);
         assert(err == std::ios_base::eofbit);
     }
@@ -125,7 +125,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 9);
         assert(err == std::ios_base::eofbit);
     }
@@ -134,7 +134,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 10);
         assert(err == std::ios_base::eofbit);
     }
@@ -143,7 +143,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 11);
         assert(err == std::ios_base::eofbit);
     }
@@ -152,7 +152,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+7);
+        assert(base(i) == in+7);
         assert(t.tm_mon == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -161,7 +161,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
         assert(t.tm_mon == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -170,7 +170,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+5);
+        assert(base(i) == in+5);
         assert(t.tm_mon == 2);
         assert(err == std::ios_base::eofbit);
     }
@@ -179,7 +179,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+5);
+        assert(base(i) == in+5);
         assert(t.tm_mon == 3);
         assert(err == std::ios_base::eofbit);
     }
@@ -188,7 +188,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_mon == 4);
         assert(err == std::ios_base::eofbit);
     }
@@ -197,7 +197,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+4);
+        assert(base(i) == in+4);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -206,7 +206,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+4);
+        assert(base(i) == in+4);
         assert(t.tm_mon == 6);
         assert(err == std::ios_base::eofbit);
     }
@@ -215,7 +215,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+6);
+        assert(base(i) == in+6);
         assert(t.tm_mon == 7);
         assert(err == std::ios_base::eofbit);
     }
@@ -224,7 +224,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+9);
+        assert(base(i) == in+9);
         assert(t.tm_mon == 8);
         assert(err == std::ios_base::eofbit);
     }
@@ -233,7 +233,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+7);
+        assert(base(i) == in+7);
         assert(t.tm_mon == 9);
         assert(err == std::ios_base::eofbit);
     }
@@ -242,7 +242,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
         assert(t.tm_mon == 10);
         assert(err == std::ios_base::eofbit);
     }
@@ -251,7 +251,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
         assert(t.tm_mon == 11);
         assert(err == std::ios_base::eofbit);
     }
@@ -260,7 +260,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+5);
+        assert(base(i) == in+5);
         assert(t.tm_mon == 0);
         assert(err == std::ios_base::failbit);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_one.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_one.pass.cpp
index 13e06a4a03341..a4ef9bd9f12c4 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_one.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_one.pass.cpp
@@ -41,7 +41,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'a');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -50,7 +50,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'A');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_wday == 3);
         assert(err == std::ios_base::eofbit);
     }
@@ -59,7 +59,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'b');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -68,7 +68,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'B');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_mon == 6);
         assert(err == std::ios_base::eofbit);
     }
@@ -77,7 +77,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'c');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_wday == 4);
         assert(t.tm_mon == 5);
         assert(t.tm_mday == 6);
@@ -92,7 +92,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'd');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_mday == 11);
         assert(err == std::ios_base::eofbit);
     }
@@ -101,7 +101,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'D');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_mon == 1);
         assert(t.tm_mday == 1);
         assert(t.tm_year == 101);
@@ -112,7 +112,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'e');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_mday == 11);
         assert(err == std::ios_base::eofbit);
     }
@@ -121,7 +121,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'h');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_mon == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -130,7 +130,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'H');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 19);
         assert(err == std::ios_base::eofbit);
     }
@@ -139,7 +139,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'm');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_mon == 11);
         assert(err == std::ios_base::eofbit);
     }
@@ -148,7 +148,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'M');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_min == 59);
         assert(err == std::ios_base::eofbit);
     }
@@ -157,7 +157,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'n');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(err == std::ios_base::eofbit);
     }
     {
@@ -165,7 +165,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'r');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 21);
         assert(t.tm_min == 49);
         assert(t.tm_sec == 10);
@@ -176,7 +176,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'r');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 9);
         assert(t.tm_min == 49);
         assert(t.tm_sec == 10);
@@ -187,7 +187,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'r');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 0);
         assert(t.tm_min == 49);
         assert(t.tm_sec == 10);
@@ -198,7 +198,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'r');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 12);
         assert(t.tm_min == 49);
         assert(t.tm_sec == 10);
@@ -209,7 +209,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'R');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 9);
         assert(t.tm_min == 49);
         assert(t.tm_sec == 0);
@@ -220,7 +220,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'S');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 0);
         assert(t.tm_min == 0);
         assert(t.tm_sec == 60);
@@ -231,7 +231,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 't');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(err == std::ios_base::eofbit);
     }
     {
@@ -239,7 +239,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'T');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 21);
         assert(t.tm_min == 49);
         assert(t.tm_sec == 10);
@@ -250,7 +250,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'w');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_wday == 3);
         assert(err == std::ios_base::eofbit);
     }
@@ -259,7 +259,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'x');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_mon == 5);
         assert(t.tm_mday == 6);
         assert(t.tm_year == 109);
@@ -270,7 +270,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'X');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 21);
         assert(t.tm_min == 49);
         assert(t.tm_sec == 10);
@@ -281,7 +281,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'y');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 168);
         assert(err == std::ios_base::eofbit);
     }
@@ -290,7 +290,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, 'Y');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == -1832);
         assert(err == std::ios_base::eofbit);
     }
@@ -299,7 +299,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get(I(in), I(in+sizeof(in)-1), ios, err, &t, '%');
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(err == std::ios_base::eofbit);
     }
 

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time.pass.cpp
index ad3ac3cdf045f..009f94d26ee53 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time.pass.cpp
@@ -42,7 +42,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 0);
         assert(t.tm_min == 0);
         assert(t.tm_sec == 0);
@@ -53,7 +53,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_hour == 23);
         assert(t.tm_min == 59);
         assert(t.tm_sec == 60);
@@ -64,7 +64,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+2);
+        assert(base(i) == in+2);
         assert(t.tm_hour == 0);
         assert(t.tm_min == 0);
         assert(t.tm_sec == 0);
@@ -75,7 +75,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+5);
+        assert(base(i) == in+5);
 //         assert(t.tm_hour == 0);
 //         assert(t.tm_min == 0);
 //         assert(t.tm_sec == 0);
@@ -86,7 +86,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
 //         assert(t.tm_hour == 0);
 //         assert(t.tm_min == 0);
 //         assert(t.tm_sec == 0);
@@ -97,7 +97,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+7);
+        assert(base(i) == in+7);
         assert(t.tm_hour == 2);
         assert(t.tm_min == 43);
         assert(t.tm_sec == 22);
@@ -108,7 +108,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+1);
+        assert(base(i) == in+1);
 //         assert(t.tm_hour == 0);
 //         assert(t.tm_min == 0);
 //         assert(t.tm_sec == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp
index 5ff5404ee46fe..b137bea451cb0 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp
@@ -44,7 +44,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_hour == 0);
         assert(t.tm_min == 0);
         assert(t.tm_sec == 0);
@@ -55,7 +55,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
+        assert(base(i) == in+sizeof(in)/sizeof(in[0])-1);
         assert(t.tm_hour == 23);
         assert(t.tm_min == 59);
         assert(t.tm_sec == 60);
@@ -66,7 +66,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+2);
+        assert(base(i) == in+2);
         assert(t.tm_hour == 0);
         assert(t.tm_min == 0);
         assert(t.tm_sec == 0);
@@ -77,7 +77,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+5);
+        assert(base(i) == in+5);
 //         assert(t.tm_hour == 0);
 //         assert(t.tm_min == 0);
 //         assert(t.tm_sec == 0);
@@ -88,7 +88,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
 //         assert(t.tm_hour == 0);
 //         assert(t.tm_min == 0);
 //         assert(t.tm_sec == 0);
@@ -99,7 +99,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+7);
+        assert(base(i) == in+7);
         assert(t.tm_hour == 2);
         assert(t.tm_min == 43);
         assert(t.tm_sec == 22);
@@ -110,7 +110,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+1);
+        assert(base(i) == in+1);
 //         assert(t.tm_hour == 0);
 //         assert(t.tm_min == 0);
 //         assert(t.tm_sec == 0);

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday.pass.cpp
index 7ab8353bc013b..23d53e32ef0d6 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday.pass.cpp
@@ -42,7 +42,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -51,7 +51,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 0);
         assert(err == std::ios_base::goodbit);
     }
@@ -60,7 +60,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+4);
+        assert(base(i) == in+4);
         assert(t.tm_wday == 0);
         assert(err == (std::ios_base::failbit | std::ios_base::eofbit));
     }
@@ -69,7 +69,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -78,7 +78,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+6);
+        assert(base(i) == in+6);
         assert(t.tm_wday == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -87,7 +87,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -96,7 +96,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::goodbit);
     }
@@ -105,7 +105,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+4);
+        assert(base(i) == in+4);
         assert(t.tm_wday == 0);
         assert(err == (std::ios_base::failbit | std::ios_base::eofbit));
     }
@@ -114,7 +114,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -123,7 +123,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+6);
+        assert(base(i) == in+6);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -132,7 +132,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 2);
         assert(err == std::ios_base::eofbit);
     }
@@ -141,7 +141,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+7);
+        assert(base(i) == in+7);
         assert(t.tm_wday == 2);
         assert(err == std::ios_base::eofbit);
     }
@@ -150,7 +150,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 3);
         assert(err == std::ios_base::eofbit);
     }
@@ -159,7 +159,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+9);
+        assert(base(i) == in+9);
         assert(t.tm_wday == 3);
         assert(err == std::ios_base::eofbit);
     }
@@ -168,7 +168,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 4);
         assert(err == std::ios_base::eofbit);
     }
@@ -177,7 +177,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
         assert(t.tm_wday == 4);
         assert(err == std::ios_base::eofbit);
     }
@@ -186,7 +186,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -195,7 +195,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+6);
+        assert(base(i) == in+6);
         assert(t.tm_wday == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -204,7 +204,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 6);
         assert(err == std::ios_base::eofbit);
     }
@@ -213,7 +213,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
         assert(t.tm_wday == 6);
         assert(err == std::ios_base::eofbit);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp
index 0a1399e695baa..b328286720cb5 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp
@@ -44,7 +44,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -53,7 +53,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 0);
         assert(err == std::ios_base::goodbit);
     }
@@ -62,7 +62,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+4);
+        assert(base(i) == in+4);
         assert(t.tm_wday == 0);
         assert(err == (std::ios_base::failbit | std::ios_base::eofbit));
     }
@@ -71,7 +71,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -80,7 +80,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+6);
+        assert(base(i) == in+6);
         assert(t.tm_wday == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -89,7 +89,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -98,7 +98,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::goodbit);
     }
@@ -107,7 +107,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+4);
+        assert(base(i) == in+4);
         assert(t.tm_wday == 0);
         assert(err == (std::ios_base::failbit | std::ios_base::eofbit));
     }
@@ -116,7 +116,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -125,7 +125,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+6);
+        assert(base(i) == in+6);
         assert(t.tm_wday == 1);
         assert(err == std::ios_base::eofbit);
     }
@@ -134,7 +134,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 2);
         assert(err == std::ios_base::eofbit);
     }
@@ -143,7 +143,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+7);
+        assert(base(i) == in+7);
         assert(t.tm_wday == 2);
         assert(err == std::ios_base::eofbit);
     }
@@ -152,7 +152,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 3);
         assert(err == std::ios_base::eofbit);
     }
@@ -161,7 +161,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+9);
+        assert(base(i) == in+9);
         assert(t.tm_wday == 3);
         assert(err == std::ios_base::eofbit);
     }
@@ -170,7 +170,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 4);
         assert(err == std::ios_base::eofbit);
     }
@@ -179,7 +179,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
         assert(t.tm_wday == 4);
         assert(err == std::ios_base::eofbit);
     }
@@ -188,7 +188,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -197,7 +197,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+6);
+        assert(base(i) == in+6);
         assert(t.tm_wday == 5);
         assert(err == std::ios_base::eofbit);
     }
@@ -206,7 +206,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+3);
+        assert(base(i) == in+3);
         assert(t.tm_wday == 6);
         assert(err == std::ios_base::eofbit);
     }
@@ -215,7 +215,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
-        assert(i.base() == in+8);
+        assert(base(i) == in+8);
         assert(t.tm_wday == 6);
         assert(err == std::ios_base::eofbit);
     }

diff  --git a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_year.pass.cpp b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_year.pass.cpp
index 404d11e30cae0..663f7647d5ac7 100644
--- a/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_year.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_year.pass.cpp
@@ -42,7 +42,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 100);
         assert(err == std::ios_base::eofbit);
     }
@@ -51,7 +51,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 100);
         assert(err == std::ios_base::eofbit);
     }
@@ -60,7 +60,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 101);
         assert(err == std::ios_base::eofbit);
     }
@@ -69,7 +69,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 168);
         assert(err == std::ios_base::eofbit);
     }
@@ -78,7 +78,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 69);
         assert(err == std::ios_base::eofbit);
     }
@@ -87,7 +87,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 99);
         assert(err == std::ios_base::eofbit);
     }
@@ -96,7 +96,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == -1800);
         assert(err == std::ios_base::eofbit);
     }
@@ -105,7 +105,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 0);
         assert(err == std::ios_base::eofbit);
     }
@@ -114,7 +114,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 68);
         assert(err == std::ios_base::eofbit);
     }
@@ -123,7 +123,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-1);
+        assert(base(i) == in+sizeof(in)-1);
         assert(t.tm_year == 100);
         assert(err == std::ios_base::eofbit);
     }
@@ -132,7 +132,7 @@ int main(int, char**)
         err = std::ios_base::goodbit;
         t = std::tm();
         I i = f.get_year(I(in), I(in+sizeof(in)-1), ios, err, &t);
-        assert(i.base() == in+sizeof(in)-2);
+        assert(base(i) == in+sizeof(in)-2);
         assert(t.tm_year == 1099);
         assert(err == std::ios_base::goodbit);
     }

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 9a14868eab2a4..4e18d4186ddf0 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
@@ -62,7 +62,7 @@ int main(int, char**)
         std::string pat("Today is %A which is abbreviated %a.");
         cpp17_output_iterator<char*> iter =
             f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, pat.data(), pat.data() + pat.size());
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "Today is Saturday which is abbreviated Sat.");
     }
     {
@@ -70,7 +70,7 @@ int main(int, char**)
         std::string pat("Today is %A which is abbreviated '%a'.");
         cpp17_output_iterator<char*> iter =
             f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, pat.data(), pat.data() + pat.size());
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert((ex == "Today is Samedi which is abbreviated 'Sam'.")||
                (ex == "Today is samedi which is abbreviated 'sam'." )||
                (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 6515a1970a11c..e65b50da652da 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
@@ -48,14 +48,14 @@ int main(int, char**)
         std::string pat("Today is %A which is abbreviated %a.");
         cpp17_output_iterator<char*> iter =
             f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, pat.data(), pat.data() + pat.size());
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "Today is Saturday which is abbreviated Sat.");
     }
     {
         std::string pat("The number of the month is %Om.");
         cpp17_output_iterator<char*> iter =
             f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, pat.data(), pat.data() + pat.size());
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         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 e5cde5613c186..ab5e546cef2fb 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
@@ -45,277 +45,277 @@ int main(int, char**)
     std::ios ios(0);
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'A');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "Saturday");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'a');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "Sat");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'B');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "May");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'b');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "May");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'C');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "20");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'c');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "Sat May  2 13:03:06 2009");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'D');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "05/02/09");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'd');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "02");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'c', 'E');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "Sat May  2 13:03:06 2009");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'C', 'E');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "20");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'x', 'E');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "05/02/09");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'X', 'E');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "13:03:06");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'y', 'E');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "09");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'Y', 'E');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "2009");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'd', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "02");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'e', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == " 2");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'H', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "13");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'I', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "01");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'm', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "05");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'M', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "03");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'S', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "06");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'u', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "6");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'U', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "17");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'V', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "18");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'w', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "6");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'W', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "17");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'y', 'O');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "09");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'e');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == " 2");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'F');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "2009-05-02");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'G');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "2009");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'g');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "09");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'H');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "13");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'h');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "May");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'I');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "01");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'j');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "122");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'M');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "03");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'm');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "05");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'n');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "\n");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'p');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "PM");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'R');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "13:03");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'r');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "01:03:06 PM");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'S');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "06");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'T');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "13:03:06");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 't');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "\t");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'U');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "17");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'u');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "6");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'V');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "18");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'W');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "17");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'w');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "6");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'X');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "13:03:06");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'x');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "05/02/09");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'Y');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "2009");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'y');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "09");
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'Z');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 //        assert(ex == "EDT");  depends on time zone
     }
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, 'z');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 //        assert(ex == "-0400");  depends on time zone
     }
 #ifndef _WIN32
@@ -323,13 +323,13 @@ int main(int, char**)
     // configuration of the invalid parameter handler, this can abort the process.
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, '+');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
 //        assert(ex == "Sat May  2 13:03:06 EDT 2009");  depends on time zone
     }
 #endif
     {
         cpp17_output_iterator<char*> iter = f.put(cpp17_output_iterator<char*>(str), ios, '*', &t, '%');
-        std::string ex(str, iter.base());
+        std::string ex(str, base(iter));
         assert(ex == "%");
     }
 

diff  --git a/libcxx/test/std/ranges/range.access/rbegin.pass.cpp b/libcxx/test/std/ranges/range.access/rbegin.pass.cpp
index 47c65f4e1d7f7..354ef3ab98043 100644
--- a/libcxx/test/std/ranges/range.access/rbegin.pass.cpp
+++ b/libcxx/test/std/ranges/range.access/rbegin.pass.cpp
@@ -423,31 +423,31 @@ static_assert( std::same_as<std::invoke_result_t<RangeCRBeginT, MemberBeginAndRB
 constexpr bool testBeginEnd() {
   MemberBeginEnd a{};
   const MemberBeginEnd aa{};
-  assert(std::ranges::rbegin(a).base().base() == &a.e);
-  assert(std::ranges::crbegin(a).base().base() == &a.ce);
-  assert(std::ranges::rbegin(aa).base().base() == &aa.ce);
-  assert(std::ranges::crbegin(aa).base().base() == &aa.ce);
+  assert(base(std::ranges::rbegin(a).base()) == &a.e);
+  assert(base(std::ranges::crbegin(a).base()) == &a.ce);
+  assert(base(std::ranges::rbegin(aa).base()) == &aa.ce);
+  assert(base(std::ranges::crbegin(aa).base()) == &aa.ce);
 
   FunctionBeginEnd b{};
   const FunctionBeginEnd bb{};
-  assert(std::ranges::rbegin(b).base().base() == &b.e);
-  assert(std::ranges::crbegin(b).base().base() == &b.ce);
-  assert(std::ranges::rbegin(bb).base().base() == &bb.ce);
-  assert(std::ranges::crbegin(bb).base().base() == &bb.ce);
+  assert(base(std::ranges::rbegin(b).base()) == &b.e);
+  assert(base(std::ranges::crbegin(b).base()) == &b.ce);
+  assert(base(std::ranges::rbegin(bb).base()) == &bb.ce);
+  assert(base(std::ranges::crbegin(bb).base()) == &bb.ce);
 
   MemberBeginFunctionEnd c{};
   const MemberBeginFunctionEnd cc{};
-  assert(std::ranges::rbegin(c).base().base() == &c.e);
-  assert(std::ranges::crbegin(c).base().base() == &c.ce);
-  assert(std::ranges::rbegin(cc).base().base() == &cc.ce);
-  assert(std::ranges::crbegin(cc).base().base() == &cc.ce);
+  assert(base(std::ranges::rbegin(c).base()) == &c.e);
+  assert(base(std::ranges::crbegin(c).base()) == &c.ce);
+  assert(base(std::ranges::rbegin(cc).base()) == &cc.ce);
+  assert(base(std::ranges::crbegin(cc).base()) == &cc.ce);
 
   FunctionBeginMemberEnd d{};
   const FunctionBeginMemberEnd dd{};
-  assert(std::ranges::rbegin(d).base().base() == &d.e);
-  assert(std::ranges::crbegin(d).base().base() == &d.ce);
-  assert(std::ranges::rbegin(dd).base().base() == &dd.ce);
-  assert(std::ranges::crbegin(dd).base().base() == &dd.ce);
+  assert(base(std::ranges::rbegin(d).base()) == &d.e);
+  assert(base(std::ranges::crbegin(d).base()) == &d.ce);
+  assert(base(std::ranges::rbegin(dd).base()) == &dd.ce);
+  assert(base(std::ranges::crbegin(dd).base()) == &dd.ce);
 
   return true;
 }

diff  --git a/libcxx/test/std/ranges/range.access/rend.pass.cpp b/libcxx/test/std/ranges/range.access/rend.pass.cpp
index b15cec155b6ff..8ffb70137c567 100644
--- a/libcxx/test/std/ranges/range.access/rend.pass.cpp
+++ b/libcxx/test/std/ranges/range.access/rend.pass.cpp
@@ -448,31 +448,31 @@ static_assert( std::same_as<std::invoke_result_t<RangeCREndT, MemberBeginAndRBeg
 constexpr bool testBeginEnd() {
   MemberBeginEnd a{};
   const MemberBeginEnd aa{};
-  assert(std::ranges::rend(a).base().base() == &a.b);
-  assert(std::ranges::crend(a).base().base() == &a.cb);
-  assert(std::ranges::rend(aa).base().base() == &aa.cb);
-  assert(std::ranges::crend(aa).base().base() == &aa.cb);
+  assert(base(std::ranges::rend(a).base()) == &a.b);
+  assert(base(std::ranges::crend(a).base()) == &a.cb);
+  assert(base(std::ranges::rend(aa).base()) == &aa.cb);
+  assert(base(std::ranges::crend(aa).base()) == &aa.cb);
 
   FunctionBeginEnd b{};
   const FunctionBeginEnd bb{};
-  assert(std::ranges::rend(b).base().base() == &b.b);
-  assert(std::ranges::crend(b).base().base() == &b.cb);
-  assert(std::ranges::rend(bb).base().base() == &bb.cb);
-  assert(std::ranges::crend(bb).base().base() == &bb.cb);
+  assert(base(std::ranges::rend(b).base()) == &b.b);
+  assert(base(std::ranges::crend(b).base()) == &b.cb);
+  assert(base(std::ranges::rend(bb).base()) == &bb.cb);
+  assert(base(std::ranges::crend(bb).base()) == &bb.cb);
 
   MemberBeginFunctionEnd c{};
   const MemberBeginFunctionEnd cc{};
-  assert(std::ranges::rend(c).base().base() == &c.b);
-  assert(std::ranges::crend(c).base().base() == &c.cb);
-  assert(std::ranges::rend(cc).base().base() == &cc.cb);
-  assert(std::ranges::crend(cc).base().base() == &cc.cb);
+  assert(base(std::ranges::rend(c).base()) == &c.b);
+  assert(base(std::ranges::crend(c).base()) == &c.cb);
+  assert(base(std::ranges::rend(cc).base()) == &cc.cb);
+  assert(base(std::ranges::crend(cc).base()) == &cc.cb);
 
   FunctionBeginMemberEnd d{};
   const FunctionBeginMemberEnd dd{};
-  assert(std::ranges::rend(d).base().base() == &d.b);
-  assert(std::ranges::crend(d).base().base() == &d.cb);
-  assert(std::ranges::rend(dd).base().base() == &dd.cb);
-  assert(std::ranges::crend(dd).base().base() == &dd.cb);
+  assert(base(std::ranges::rend(d).base()) == &d.b);
+  assert(base(std::ranges::crend(d).base()) == &d.cb);
+  assert(base(std::ranges::rend(dd).base()) == &dd.cb);
+  assert(base(std::ranges::crend(dd).base()) == &dd.cb);
 
   return true;
 }

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.all/range.ref.view/range.ref.view.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.all/range.ref.view/range.ref.view.pass.cpp
index 6a92cabcc1f92..d0ae139677a9e 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.all/range.ref.view/range.ref.view.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.all/range.ref.view/range.ref.view.pass.cpp
@@ -72,7 +72,7 @@ struct ForwardRange {
 
 struct Cpp17InputRange {
   struct sentinel {
-    friend constexpr bool operator==(sentinel, cpp17_input_iterator<int*> iter) { return iter.base() == globalBuff + 8; }
+    friend constexpr bool operator==(sentinel, cpp17_input_iterator<int*> iter) { return base(iter) == globalBuff + 8; }
     friend constexpr std::ptr
diff _t operator-(sentinel, cpp17_input_iterator<int*>) { return -8; }
     friend constexpr std::ptr
diff _t operator-(cpp17_input_iterator<int*>, sentinel) { return 8; }
   };
@@ -85,7 +85,7 @@ struct Cpp17InputRange {
 
 struct Cpp20InputRange {
   struct sentinel {
-    friend constexpr bool operator==(sentinel, const cpp20_input_iterator<int*> &iter) { return iter.base() == globalBuff + 8; }
+    friend constexpr bool operator==(sentinel, const cpp20_input_iterator<int*> &iter) { return base(iter) == globalBuff + 8; }
     friend constexpr std::ptr
diff _t operator-(sentinel, const cpp20_input_iterator<int*>&) { return -8; }
   };
 
@@ -129,15 +129,15 @@ constexpr bool test() {
 
     ForwardRange range2;
     std::ranges::ref_view<ForwardRange> view2 = range2;
-    assert(view2.begin().base() == globalBuff);
+    assert(base(view2.begin()) == globalBuff);
 
     Cpp17InputRange range3;
     std::ranges::ref_view<Cpp17InputRange> view3 = range3;
-    assert(view3.begin().base() == globalBuff);
+    assert(base(view3.begin()) == globalBuff);
 
     Cpp20InputRange range4;
     std::ranges::ref_view<Cpp20InputRange> view4 = range4;
-    assert(view4.begin().base() == globalBuff);
+    assert(base(view4.begin()) == globalBuff);
   }
 
   {
@@ -148,7 +148,7 @@ constexpr bool test() {
 
     ForwardRange range2;
     std::ranges::ref_view<ForwardRange> view2 = range2;
-    assert(view2.end().base() == globalBuff + 8);
+    assert(base(view2.end()) == globalBuff + 8);
 
     Cpp17InputRange range3;
     std::ranges::ref_view<Cpp17InputRange> view3 = range3;

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.common.view/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.common.view/end.pass.cpp
index cf3b625612bb4..de56965a9df11 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.common.view/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.common.view/end.pass.cpp
@@ -30,7 +30,7 @@ constexpr bool test() {
     SizedRandomAccessView view{buf, buf + 8};
     std::ranges::common_view<SizedRandomAccessView> common(view);
     std::same_as<RandomAccessIter> auto end = common.end(); // Note this should NOT be the sentinel type.
-    assert(end.base() == buf + 8);
+    assert(base(end) == buf + 8);
   }
 
   // const version
@@ -38,7 +38,7 @@ constexpr bool test() {
     SizedRandomAccessView view{buf, buf + 8};
     std::ranges::common_view<SizedRandomAccessView> const common(view);
     std::same_as<RandomAccessIter> auto end = common.end(); // Note this should NOT be the sentinel type.
-    assert(end.base() == buf + 8);
+    assert(base(end) == buf + 8);
   }
 
   return true;

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.drop/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.drop/begin.pass.cpp
index 9bac2b9fbb218..e354d3380c515 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.drop/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.drop/begin.pass.cpp
@@ -52,11 +52,11 @@ constexpr bool test() {
 
   // !random_access_range<const V>
   std::ranges::drop_view dropView2(ForwardView(), 4);
-  assert(dropView2.begin().base() == globalBuff + 4);
+  assert(base(dropView2.begin()) == globalBuff + 4);
 
   // !random_access_range<const V>
   std::ranges::drop_view dropView3(InputView(), 4);
-  assert(dropView3.begin().base() == globalBuff + 4);
+  assert(base(dropView3.begin()) == globalBuff + 4);
 
   // random_access_range<const V> && sized_range<const V>
   std::ranges::drop_view dropView4(MoveOnlyView(), 8);

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.view.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.view.pass.cpp
index 415562f3e6179..19d356725da20 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.view.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.view.pass.cpp
@@ -23,7 +23,7 @@ constexpr bool test() {
   assert(dropView1.begin() == globalBuff + 4);
 
   std::ranges::drop_view dropView2(ForwardView(), 4);
-  assert(dropView2.begin().base() == globalBuff + 4);
+  assert(base(dropView2.begin()) == globalBuff + 4);
 
   return true;
 }

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.drop/types.h b/libcxx/test/std/ranges/range.adaptors/range.drop/types.h
index 8a9612edcafc4..b32c534a37e43 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.drop/types.h
+++ b/libcxx/test/std/ranges/range.adaptors/range.drop/types.h
@@ -80,8 +80,8 @@ struct InputView : std::ranges::view_base {
   constexpr int* end() const { return globalBuff + 8; }
 };
 // TODO: remove these bogus operators
-constexpr bool operator==(const cpp20_input_iterator<int*> &lhs, int* rhs) { return lhs.base() == rhs; }
-constexpr bool operator==(int* lhs, const cpp20_input_iterator<int*> &rhs) { return rhs.base() == lhs; }
+constexpr bool operator==(const cpp20_input_iterator<int*> &lhs, int* rhs) { return base(lhs) == rhs; }
+constexpr bool operator==(int* lhs, const cpp20_input_iterator<int*> &rhs) { return base(rhs) == lhs; }
 
 struct Range {
   int *begin() const;

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.join.view/types.h b/libcxx/test/std/ranges/range.adaptors/range.join.view/types.h
index 661beaa3a92f9..7a3dafb4aa1cd 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join.view/types.h
+++ b/libcxx/test/std/ranges/range.adaptors/range.join.view/types.h
@@ -31,8 +31,8 @@ struct ChildView : std::ranges::view_base {
   constexpr const int *end() const { return ptr_ + 4; }
 };
 
-constexpr bool operator==(const cpp20_input_iterator<int*> &lhs, int* rhs) { return lhs.base() == rhs; }
-constexpr bool operator==(int* lhs, const cpp20_input_iterator<int*> &rhs) { return rhs.base() == lhs; }
+constexpr bool operator==(const cpp20_input_iterator<int*> &lhs, int* rhs) { return base(lhs) == rhs; }
+constexpr bool operator==(int* lhs, const cpp20_input_iterator<int*> &rhs) { return base(rhs) == lhs; }
 
 ChildView globalChildren[4] = {ChildView(globalBuffer[0]), ChildView(globalBuffer[1]), ChildView(globalBuffer[2]), ChildView(globalBuffer[3])};
 
@@ -58,9 +58,9 @@ struct ParentView : std::ranges::view_base {
 };
 // TODO: remove these bogus operators
 template<class T>
-constexpr bool operator==(const cpp20_input_iterator<T*> &lhs, T *rhs) { return lhs.base() == rhs; }
+constexpr bool operator==(const cpp20_input_iterator<T*> &lhs, T *rhs) { return base(lhs) == rhs; }
 template<class T>
-constexpr bool operator==(T *lhs, const cpp20_input_iterator<T*> &rhs) { return rhs.base() == lhs; }
+constexpr bool operator==(T *lhs, const cpp20_input_iterator<T*> &rhs) { return base(rhs) == lhs; }
 
 struct CopyableChild : std::ranges::view_base {
   int *ptr_;
@@ -74,8 +74,8 @@ struct CopyableChild : std::ranges::view_base {
   constexpr const int *end() const { return ptr_ + size_; }
 };
 // TODO: remove these bogus operators
-constexpr bool operator==(const cpp17_input_iterator<const int*> &lhs, const int* rhs) { return lhs.base() == rhs; }
-constexpr bool operator==(const int* lhs, const cpp17_input_iterator<const int*> &rhs) { return rhs.base() == lhs; }
+constexpr bool operator==(const cpp17_input_iterator<const int*> &lhs, const int* rhs) { return base(lhs) == rhs; }
+constexpr bool operator==(const int* lhs, const cpp17_input_iterator<const int*> &rhs) { return base(rhs) == lhs; }
 
 struct CopyableParent : std::ranges::view_base {
   CopyableChild *ptr_;
@@ -87,8 +87,8 @@ struct CopyableParent : std::ranges::view_base {
   constexpr const CopyableChild *end() const { return ptr_ + 4; }
 };
 // TODO: remove these bogus operators
-constexpr bool operator==(const cpp17_input_iterator<const CopyableChild*> &lhs, const CopyableChild *rhs) { return lhs.base() == rhs; }
-constexpr bool operator==(const CopyableChild *lhs, const cpp17_input_iterator<const CopyableChild*> &rhs) { return rhs.base() == lhs; }
+constexpr bool operator==(const cpp17_input_iterator<const CopyableChild*> &lhs, const CopyableChild *rhs) { return base(lhs) == rhs; }
+constexpr bool operator==(const CopyableChild *lhs, const cpp17_input_iterator<const CopyableChild*> &rhs) { return base(rhs) == lhs; }
 
 struct Box { int x; };
 

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.reverse/adaptor.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.reverse/adaptor.pass.cpp
index 9534e0f70dd5e..e8e9d46c68cdc 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.reverse/adaptor.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.reverse/adaptor.pass.cpp
@@ -60,24 +60,24 @@ constexpr bool test() {
       BidirRange view(buf, buf + 3);
       ReverseSubrange subrange(ReverseIt(std::ranges::end(view)), ReverseIt(std::ranges::begin(view)), /* size */3);
       std::same_as<Subrange> auto result = std::views::reverse(subrange);
-      assert(result.begin().base() == buf);
-      assert(result.end().base() == buf + 3);
+      assert(base(result.begin()) == buf);
+      assert(base(result.end()) == buf + 3);
     }
     {
       // std::move into views::reverse
       BidirRange view(buf, buf + 3);
       ReverseSubrange subrange(ReverseIt(std::ranges::end(view)), ReverseIt(std::ranges::begin(view)), /* size */3);
       std::same_as<Subrange> auto result = std::views::reverse(std::move(subrange));
-      assert(result.begin().base() == buf);
-      assert(result.end().base() == buf + 3);
+      assert(base(result.begin()) == buf);
+      assert(base(result.end()) == buf + 3);
     }
     {
       // with a const subrange
       BidirRange view(buf, buf + 3);
       ReverseSubrange const subrange(ReverseIt(std::ranges::end(view)), ReverseIt(std::ranges::begin(view)), /* size */3);
       std::same_as<Subrange> auto result = std::views::reverse(subrange);
-      assert(result.begin().base() == buf);
-      assert(result.end().base() == buf + 3);
+      assert(base(result.begin()) == buf);
+      assert(base(result.end()) == buf + 3);
     }
   }
 
@@ -94,24 +94,24 @@ constexpr bool test() {
       BidirRange view(buf, buf + 3);
       ReverseSubrange subrange(ReverseIt(std::ranges::end(view)), ReverseIt(std::ranges::begin(view)));
       std::same_as<Subrange> auto result = std::views::reverse(subrange);
-      assert(result.begin().base() == buf);
-      assert(result.end().base() == buf + 3);
+      assert(base(result.begin()) == buf);
+      assert(base(result.end()) == buf + 3);
     }
     {
       // std::move into views::reverse
       BidirRange view(buf, buf + 3);
       ReverseSubrange subrange(ReverseIt(std::ranges::end(view)), ReverseIt(std::ranges::begin(view)));
       std::same_as<Subrange> auto result = std::views::reverse(std::move(subrange));
-      assert(result.begin().base() == buf);
-      assert(result.end().base() == buf + 3);
+      assert(base(result.begin()) == buf);
+      assert(base(result.end()) == buf + 3);
     }
     {
       // with a const subrange
       BidirRange view(buf, buf + 3);
       ReverseSubrange const subrange(ReverseIt(std::ranges::end(view)), ReverseIt(std::ranges::begin(view)));
       std::same_as<Subrange> auto result = std::views::reverse(subrange);
-      assert(result.begin().base() == buf);
-      assert(result.end().base() == buf + 3);
+      assert(base(result.begin()) == buf);
+      assert(base(result.end()) == buf + 3);
     }
   }
 
@@ -119,8 +119,8 @@ constexpr bool test() {
   {
     BidirRange view(buf, buf + 3);
     std::same_as<std::ranges::reverse_view<BidirRange>> auto result = std::views::reverse(view);
-    assert(result.begin().base().base() == buf + 3);
-    assert(result.end().base().base() == buf);
+    assert(base(result.begin().base()) == buf + 3);
+    assert(base(result.end().base()) == buf);
   }
 
   // Test that std::views::reverse is a range adaptor
@@ -129,8 +129,8 @@ constexpr bool test() {
     {
       BidirRange view(buf, buf + 3);
       std::same_as<std::ranges::reverse_view<BidirRange>> auto result = view | std::views::reverse;
-      assert(result.begin().base().base() == buf + 3);
-      assert(result.end().base().base() == buf);
+      assert(base(result.begin().base()) == buf + 3);
+      assert(base(result.end().base()) == buf);
     }
 
     // Test `adaptor | views::reverse`
@@ -140,8 +140,8 @@ constexpr bool test() {
       auto const partial = std::views::transform(f) | std::views::reverse;
       using Result = std::ranges::reverse_view<std::ranges::transform_view<BidirRange, decltype(f)>>;
       std::same_as<Result> auto result = partial(view);
-      assert(result.begin().base().base().base() == buf + 3);
-      assert(result.end().base().base().base() == buf);
+      assert(base(result.begin().base().base()) == buf + 3);
+      assert(base(result.end().base().base()) == buf);
     }
 
     // Test `views::reverse | adaptor`
@@ -151,8 +151,8 @@ constexpr bool test() {
       auto const partial = std::views::reverse | std::views::transform(f);
       using Result = std::ranges::transform_view<std::ranges::reverse_view<BidirRange>, decltype(f)>;
       std::same_as<Result> auto result = partial(view);
-      assert(result.begin().base().base().base() == buf + 3);
-      assert(result.end().base().base().base() == buf);
+      assert(base(result.begin().base().base()) == buf + 3);
+      assert(base(result.end().base().base()) == buf);
     }
 
     // Check SFINAE friendliness

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.reverse/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.reverse/begin.pass.cpp
index 67b8a152d0aed..96965ce042b7b 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.reverse/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.reverse/begin.pass.cpp
@@ -85,8 +85,8 @@ constexpr bool test() {
   // Common bidirectional range.
   {
     auto rev = std::ranges::reverse_view(BidirRange{buffer, buffer + 8});
-    assert(rev.begin().base().base() == buffer + 8);
-    assert(std::move(rev).begin().base().base() == buffer + 8);
+    assert(base(rev.begin().base()) == buffer + 8);
+    assert(base(std::move(rev).begin().base()) == buffer + 8);
 
     ASSERT_SAME_TYPE(decltype(rev.begin()), std::reverse_iterator<bidirectional_iterator<int*>>);
     ASSERT_SAME_TYPE(decltype(std::move(rev).begin()), std::reverse_iterator<bidirectional_iterator<int*>>);
@@ -94,8 +94,8 @@ constexpr bool test() {
   // Const common bidirectional range.
   {
     const auto rev = std::ranges::reverse_view(BidirRange{buffer, buffer + 8});
-    assert(rev.begin().base().base() == buffer + 8);
-    assert(std::move(rev).begin().base().base() == buffer + 8);
+    assert(base(rev.begin().base()) == buffer + 8);
+    assert(base(std::move(rev).begin().base()) == buffer + 8);
 
     ASSERT_SAME_TYPE(decltype(rev.begin()), std::reverse_iterator<bidirectional_iterator<const int*>>);
     ASSERT_SAME_TYPE(decltype(std::move(rev).begin()), std::reverse_iterator<bidirectional_iterator<const int*>>);
@@ -103,15 +103,15 @@ constexpr bool test() {
   // Non-common, non-const (move only) bidirectional range.
   {
     auto rev = std::ranges::reverse_view(BidirSentRange<MoveOnly>{buffer, buffer + 8});
-    assert(std::move(rev).begin().base().base() == buffer + 8);
+    assert(base(std::move(rev).begin().base()) == buffer + 8);
 
     ASSERT_SAME_TYPE(decltype(std::move(rev).begin()), std::reverse_iterator<bidirectional_iterator<int*>>);
   }
   // Non-common, non-const bidirectional range.
   {
     auto rev = std::ranges::reverse_view(BidirSentRange<Copyable>{buffer, buffer + 8});
-    assert(rev.begin().base().base() == buffer + 8);
-    assert(std::move(rev).begin().base().base() == buffer + 8);
+    assert(base(rev.begin().base()) == buffer + 8);
+    assert(base(std::move(rev).begin().base()) == buffer + 8);
 
     ASSERT_SAME_TYPE(decltype(rev.begin()), std::reverse_iterator<bidirectional_iterator<int*>>);
     ASSERT_SAME_TYPE(decltype(std::move(rev).begin()), std::reverse_iterator<bidirectional_iterator<int*>>);
@@ -121,8 +121,8 @@ constexpr bool test() {
   // to implement for random access ranges.
   {
     auto rev = std::ranges::reverse_view(RASentRange{buffer, buffer + 8});
-    assert(rev.begin().base().base() == buffer + 8);
-    assert(std::move(rev).begin().base().base() == buffer + 8);
+    assert(base(rev.begin().base()) == buffer + 8);
+    assert(base(std::move(rev).begin().base()) == buffer + 8);
 
     ASSERT_SAME_TYPE(decltype(rev.begin()), std::reverse_iterator<random_access_iterator<int*>>);
     ASSERT_SAME_TYPE(decltype(std::move(rev).begin()), std::reverse_iterator<random_access_iterator<int*>>);

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.reverse/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.reverse/end.pass.cpp
index 4da74106a1042..1903b92e0970d 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.reverse/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.reverse/end.pass.cpp
@@ -27,8 +27,8 @@ constexpr bool test() {
   // Common bidirectional range.
   {
     auto rev = std::ranges::reverse_view(BidirRange{buffer, buffer + 8});
-    assert(rev.end().base().base() == buffer);
-    assert(std::move(rev).end().base().base() == buffer);
+    assert(base(rev.end().base()) == buffer);
+    assert(base(std::move(rev).end().base()) == buffer);
 
     ASSERT_SAME_TYPE(decltype(rev.end()), std::reverse_iterator<bidirectional_iterator<int*>>);
     ASSERT_SAME_TYPE(decltype(std::move(rev).end()), std::reverse_iterator<bidirectional_iterator<int*>>);
@@ -36,8 +36,8 @@ constexpr bool test() {
   // Const common bidirectional range.
   {
     const auto rev = std::ranges::reverse_view(BidirRange{buffer, buffer + 8});
-    assert(rev.end().base().base() == buffer);
-    assert(std::move(rev).end().base().base() == buffer);
+    assert(base(rev.end().base()) == buffer);
+    assert(base(std::move(rev).end().base()) == buffer);
 
     ASSERT_SAME_TYPE(decltype(rev.end()), std::reverse_iterator<bidirectional_iterator<const int*>>);
     ASSERT_SAME_TYPE(decltype(std::move(rev).end()), std::reverse_iterator<bidirectional_iterator<const int*>>);
@@ -45,15 +45,15 @@ constexpr bool test() {
   // Non-common, non-const (move only) bidirectional range.
   {
     auto rev = std::ranges::reverse_view(BidirSentRange<MoveOnly>{buffer, buffer + 8});
-    assert(std::move(rev).end().base().base() == buffer);
+    assert(base(std::move(rev).end().base()) == buffer);
 
     ASSERT_SAME_TYPE(decltype(std::move(rev).end()), std::reverse_iterator<bidirectional_iterator<int*>>);
   }
   // Non-common, const bidirectional range.
   {
     auto rev = std::ranges::reverse_view(BidirSentRange<Copyable>{buffer, buffer + 8});
-    assert(rev.end().base().base() == buffer);
-    assert(std::move(rev).end().base().base() == buffer);
+    assert(base(rev.end().base()) == buffer);
+    assert(base(std::move(rev).end().base()) == buffer);
 
     ASSERT_SAME_TYPE(decltype(rev.end()), std::reverse_iterator<bidirectional_iterator<int*>>);
     ASSERT_SAME_TYPE(decltype(std::move(rev).end()), std::reverse_iterator<bidirectional_iterator<int*>>);

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.transform/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/begin.pass.cpp
index af13da520d7f6..e93a22a4c397a 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/begin.pass.cpp
@@ -34,13 +34,13 @@ constexpr bool test() {
 
   {
     std::ranges::transform_view transformView(ForwardView{buff}, PlusOneMutable{});
-    assert(transformView.begin().base().base() == buff);
+    assert(base(transformView.begin().base()) == buff);
     assert(*transformView.begin() == 1);
   }
 
   {
     std::ranges::transform_view transformView(InputView{buff}, PlusOneMutable{});
-    assert(transformView.begin().base().base() == buff);
+    assert(base(transformView.begin().base()) == buff);
     assert(*transformView.begin() == 1);
   }
 

diff  --git a/libcxx/test/std/ranges/range.adaptors/range.transform/types.h b/libcxx/test/std/ranges/range.adaptors/range.transform/types.h
index 64794c2262779..d31db8d5a8146 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/types.h
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/types.h
@@ -98,10 +98,10 @@ struct SizedSentinelView : std::ranges::view_base {
   constexpr int *end() const { return globalBuff + count_; }
 };
 // TODO: remove these bogus operators
-constexpr auto operator- (const RandomAccessIter &lhs, int* rhs) { return lhs.base() - rhs; }
-constexpr auto operator- (int* lhs, const RandomAccessIter &rhs) { return lhs - rhs.base(); }
-constexpr bool operator==(const RandomAccessIter &lhs, int* rhs) { return lhs.base() == rhs; }
-constexpr bool operator==(int* lhs, const RandomAccessIter &rhs) { return rhs.base() == lhs; }
+constexpr auto operator- (const RandomAccessIter &lhs, int* rhs) { return base(lhs) - rhs; }
+constexpr auto operator- (int* lhs, const RandomAccessIter &rhs) { return lhs - base(rhs); }
+constexpr bool operator==(const RandomAccessIter &lhs, int* rhs) { return base(lhs) == rhs; }
+constexpr bool operator==(int* lhs, const RandomAccessIter &rhs) { return base(rhs) == lhs; }
 
 struct SizedSentinelNotConstView : std::ranges::view_base {
   ForwardIter begin() const;

diff  --git a/libcxx/test/std/ranges/range.utility/range.subrange/advance.pass.cpp b/libcxx/test/std/ranges/range.utility/range.subrange/advance.pass.cpp
index 419a47f092f70..c2fa184d7a525 100644
--- a/libcxx/test/std/ranges/range.utility/range.subrange/advance.pass.cpp
+++ b/libcxx/test/std/ranges/range.utility/range.subrange/advance.pass.cpp
@@ -33,20 +33,20 @@ constexpr bool test() {
 
   std::ranges::subrange<InputIter, sentinel_wrapper<InputIter>> b(InputIter(globalBuff), sentinel_wrapper(InputIter(globalBuff + 8)));
   auto b1 = std::move(b).next();
-  assert(b1.begin().base() == globalBuff + 1);
+  assert(base(b1.begin()) == globalBuff + 1);
 
   std::ranges::subrange<BidirIter> c(BidirIter(globalBuff + 4), BidirIter(globalBuff + 8));
   auto c1 = c.prev();
-  assert(c1.begin().base() == globalBuff + 3);
+  assert(base(c1.begin()) == globalBuff + 3);
   auto c2 = c.prev(4);
-  assert(c2.begin().base() == globalBuff);
+  assert(base(c2.begin()) == globalBuff);
 
   std::ranges::subrange<BidirIter> d(BidirIter(globalBuff + 4), BidirIter(globalBuff + 8));
   auto d1 = d.advance(4);
-  assert(d1.begin().base() == globalBuff + 8);
+  assert(base(d1.begin()) == globalBuff + 8);
   assert(d1.empty());
   auto d2 = d1.advance(-4);
-  assert(d2.begin().base() == globalBuff + 4);
+  assert(base(d2.begin()) == globalBuff + 4);
 
   return true;
 }

diff  --git a/libcxx/test/std/ranges/range.utility/range.subrange/ctor.begin_end.pass.cpp b/libcxx/test/std/ranges/range.utility/range.subrange/ctor.begin_end.pass.cpp
index ea0a7903a9f6e..dcae3b233ca72 100644
--- a/libcxx/test/std/ranges/range.utility/range.subrange/ctor.begin_end.pass.cpp
+++ b/libcxx/test/std/ranges/range.utility/range.subrange/ctor.begin_end.pass.cpp
@@ -35,8 +35,8 @@ static_assert( std::is_constructible_v<ForwardSubrange, ForwardIter, ForwardIter
 
 constexpr bool test() {
   ForwardSubrange a(ForwardIter(globalBuff), ForwardIter(globalBuff + 8));
-  assert(a.begin().base() == globalBuff);
-  assert(a.end().base() == globalBuff + 8);
+  assert(base(a.begin()) == globalBuff);
+  assert(base(a.end()) == globalBuff + 8);
 
   ConvertibleForwardSubrange b(ConvertibleForwardIter(globalBuff), globalBuff + 8);
   assert(b.begin() == globalBuff);

diff  --git a/libcxx/test/std/ranges/range.utility/range.subrange/ctor.pair_like_conv.pass.cpp b/libcxx/test/std/ranges/range.utility/range.subrange/ctor.pair_like_conv.pass.cpp
index c38a3979312c9..83c2390634b14 100644
--- a/libcxx/test/std/ranges/range.utility/range.subrange/ctor.pair_like_conv.pass.cpp
+++ b/libcxx/test/std/ranges/range.utility/range.subrange/ctor.pair_like_conv.pass.cpp
@@ -32,11 +32,11 @@ static_assert( std::is_convertible_v<SizedIntPtrSubrange, std::tuple<int*, int*>
 constexpr bool test() {
   ForwardSubrange a(ForwardIter(globalBuff), ForwardIter(globalBuff + 8));
   std::pair<ForwardIter, ForwardIter> aPair = a;
-  assert(aPair.first.base() == globalBuff);
-  assert(aPair.second.base() == globalBuff + 8);
+  assert(base(aPair.first) == globalBuff);
+  assert(base(aPair.second) == globalBuff + 8);
   std::tuple<ForwardIter, ForwardIter> aTuple = a;
-  assert(std::get<0>(aTuple).base() == globalBuff);
-  assert(std::get<1>(aTuple).base() == globalBuff + 8);
+  assert(base(std::get<0>(aTuple)) == globalBuff);
+  assert(base(std::get<1>(aTuple)) == globalBuff + 8);
 
   return true;
 }

diff  --git a/libcxx/test/std/ranges/range.utility/range.subrange/ctor.range.pass.cpp b/libcxx/test/std/ranges/range.utility/range.subrange/ctor.range.pass.cpp
index f747c655df9b5..d1d398ab8879a 100644
--- a/libcxx/test/std/ranges/range.utility/range.subrange/ctor.range.pass.cpp
+++ b/libcxx/test/std/ranges/range.utility/range.subrange/ctor.range.pass.cpp
@@ -29,15 +29,15 @@ static_assert( std::is_constructible_v<DifferentSentinelWithSizeMemberSubrange,
 
 constexpr bool test() {
   ForwardSubrange a{ForwardBorrowedRange()};
-  assert(a.begin().base() == globalBuff);
-  assert(a.end().base() == globalBuff + 8);
+  assert(base(a.begin()) == globalBuff);
+  assert(base(a.end()) == globalBuff + 8);
 
   ConvertibleForwardSubrange b{ConvertibleForwardBorrowedRange()};
   assert(b.begin() == globalBuff);
   assert(b.end() == globalBuff + 8);
 
   DifferentSentinelSubrange c{ForwardBorrowedRangeDifferentSentinel()};
-  assert(c.begin().base() == globalBuff);
+  assert(base(c.begin()) == globalBuff);
   assert(c.end().value == globalBuff + 8);
 
   return true;

diff  --git a/libcxx/test/std/ranges/range.utility/range.subrange/primitives.pass.cpp b/libcxx/test/std/ranges/range.utility/range.subrange/primitives.pass.cpp
index b2f135e2e159d..3af2d4fe495d5 100644
--- a/libcxx/test/std/ranges/range.utility/range.subrange/primitives.pass.cpp
+++ b/libcxx/test/std/ranges/range.utility/range.subrange/primitives.pass.cpp
@@ -23,7 +23,7 @@ constexpr bool test() {
 
   {
     std::ranges::subrange<MoveOnlyForwardIter, int*> a(MoveOnlyForwardIter(buff), buff + 5, 5);
-    assert(a.begin().base == buff);
+    assert(base(a.begin()) == buff);
     assert(!a.empty());
     assert(a.size() == 5);
   }

diff  --git a/libcxx/test/std/ranges/range.utility/range.subrange/types.h b/libcxx/test/std/ranges/range.utility/range.subrange/types.h
index c07bfffe82105..e730d6ae05116 100644
--- a/libcxx/test/std/ranges/range.utility/range.subrange/types.h
+++ b/libcxx/test/std/ranges/range.utility/range.subrange/types.h
@@ -189,7 +189,7 @@ inline constexpr bool std::ranges::enable_borrowed_range<ConvertibleForwardBorro
 struct ForwardBorrowedRangeDifferentSentinel {
   struct sentinel {
     int *value;
-    friend bool operator==(sentinel s, ForwardIter i) { return s.value == i.base(); }
+    friend bool operator==(sentinel s, ForwardIter i) { return s.value == base(i); }
   };
 
   constexpr ForwardIter begin() const { return ForwardIter(globalBuff); }
@@ -206,7 +206,7 @@ using DifferentSentinelSubrange = std::ranges::subrange<ForwardIter,
 struct DifferentSentinelWithSizeMember {
   struct sentinel {
     int *value;
-    friend bool operator==(sentinel s, ForwardIter i) { return s.value == i.base(); }
+    friend bool operator==(sentinel s, ForwardIter i) { return s.value == base(i); }
   };
 
   constexpr ForwardIter begin() const { return ForwardIter(globalBuff); }

diff  --git a/libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp b/libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp
index 9faa3f564f5b6..2b4f352d81bd8 100644
--- a/libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp
+++ b/libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp
@@ -58,7 +58,7 @@ using ForwardIter = forward_iterator<int*>;
 
 // So that we conform to sized_sentinel_for.
 constexpr std::ptr
diff _t operator-(const ForwardIter& x, const ForwardIter& y) {
-    return x.base() - y.base();
+    return base(x) - base(y);
 }
 
 struct ForwardRange : std::ranges::view_interface<ForwardRange> {
@@ -136,10 +136,10 @@ struct BoolConvertibleComparison : std::ranges::view_interface<BoolConvertibleCo
     int *base_;
     explicit SentinelType() = default;
     constexpr explicit SentinelType(int *base) : base_(base) {}
-    friend constexpr ResultType operator==(ForwardIter const& iter, SentinelType const& sent) noexcept { return {iter.base() == sent.base_}; }
-    friend constexpr ResultType operator==(SentinelType const& sent, ForwardIter const& iter) noexcept { return {iter.base() == sent.base_}; }
-    friend constexpr ResultType operator!=(ForwardIter const& iter, SentinelType const& sent) noexcept { return {iter.base() != sent.base_}; }
-    friend constexpr ResultType operator!=(SentinelType const& sent, ForwardIter const& iter) noexcept { return {iter.base() != sent.base_}; }
+    friend constexpr ResultType operator==(ForwardIter const& iter, SentinelType const& sent) noexcept { return {base(iter) == sent.base_}; }
+    friend constexpr ResultType operator==(SentinelType const& sent, ForwardIter const& iter) noexcept { return {base(iter) == sent.base_}; }
+    friend constexpr ResultType operator!=(ForwardIter const& iter, SentinelType const& sent) noexcept { return {base(iter) != sent.base_}; }
+    friend constexpr ResultType operator!=(SentinelType const& sent, ForwardIter const& iter) noexcept { return {base(iter) != sent.base_}; }
   };
 
   int buff[8] = {0, 1, 2, 3, 4, 5, 6, 7};

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 ac7a1a58b2acb..193dd614d6e79 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
@@ -35,7 +35,7 @@ int main(int, char**)
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
                                     Bi(std::end(phone_book)-1), phone_numbers,
                                     std::string("123-$&"));
-        assert(r.base() == buf+40);
+        assert(base(r) == buf+40);
         assert(buf == std::string("123-555-1234, 123-555-2345, 123-555-3456"));
     }
     {
@@ -48,7 +48,7 @@ int main(int, char**)
                                     Bi(std::end(phone_book)-1), phone_numbers,
                                     std::string("123-$&"),
                                     std::regex_constants::format_sed);
-        assert(r.base() == buf+43);
+        assert(base(r) == buf+43);
         assert(buf == std::string("123-$555-1234, 123-$555-2345, 123-$555-3456"));
     }
     {
@@ -61,7 +61,7 @@ int main(int, char**)
                                     Bi(std::end(phone_book)-1), phone_numbers,
                                     std::string("123-&"),
                                     std::regex_constants::format_sed);
-        assert(r.base() == buf+40);
+        assert(base(r) == buf+40);
         assert(buf == std::string("123-555-1234, 123-555-2345, 123-555-3456"));
     }
     {
@@ -74,7 +74,7 @@ int main(int, char**)
                                     Bi(std::end(phone_book)-1), phone_numbers,
                                     std::string("123-$&"),
                                     std::regex_constants::format_no_copy);
-        assert(r.base() == buf+36);
+        assert(base(r) == buf+36);
         assert(buf == std::string("123-555-1234123-555-2345123-555-3456"));
     }
     {
@@ -87,7 +87,7 @@ int main(int, char**)
                                     Bi(std::end(phone_book)-1), phone_numbers,
                                     std::string("123-$&"),
                                     std::regex_constants::format_first_only);
-        assert(r.base() == buf+32);
+        assert(base(r) == buf+32);
         assert(buf == std::string("123-555-1234, 555-2345, 555-3456"));
     }
     {
@@ -101,7 +101,7 @@ int main(int, char**)
                                     std::string("123-$&"),
                                     std::regex_constants::format_first_only |
                                     std::regex_constants::format_no_copy);
-        assert(r.base() == buf+12);
+        assert(base(r) == buf+12);
         assert(buf == std::string("123-555-1234"));
     }
 

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 2518b08d4245b..ed5230a9e78dc 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
@@ -35,7 +35,7 @@ int main(int, char**)
         Out r = std::regex_replace(Out(buf), Bi(std::begin(phone_book)),
                                     Bi(std::end(phone_book)-1), phone_numbers,
                                     "123-$&");
-        assert(r.base() == buf+40);
+        assert(base(r) == buf+40);
         assert(buf == std::string("123-555-1234, 123-555-2345, 123-555-3456"));
     }
     {
@@ -48,7 +48,7 @@ int main(int, char**)
                                     Bi(std::end(phone_book)-1), phone_numbers,
                                     "123-$&",
                                     std::regex_constants::format_sed);
-        assert(r.base() == buf+43);
+        assert(base(r) == buf+43);
         assert(buf == std::string("123-$555-1234, 123-$555-2345, 123-$555-3456"));
     }
     {
@@ -61,7 +61,7 @@ int main(int, char**)
                                     Bi(std::end(phone_book)-1), phone_numbers,
                                     "123-&",
                                     std::regex_constants::format_sed);
-        assert(r.base() == buf+40);
+        assert(base(r) == buf+40);
         assert(buf == std::string("123-555-1234, 123-555-2345, 123-555-3456"));
     }
     {
@@ -74,7 +74,7 @@ int main(int, char**)
                                     Bi(std::end(phone_book)-1), phone_numbers,
                                     "123-$&",
                                     std::regex_constants::format_no_copy);
-        assert(r.base() == buf+36);
+        assert(base(r) == buf+36);
         assert(buf == std::string("123-555-1234123-555-2345123-555-3456"));
     }
     {
@@ -87,7 +87,7 @@ int main(int, char**)
                                     Bi(std::end(phone_book)-1), phone_numbers,
                                     "123-$&",
                                     std::regex_constants::format_first_only);
-        assert(r.base() == buf+32);
+        assert(base(r) == buf+32);
         assert(buf == std::string("123-555-1234, 555-2345, 555-3456"));
     }
     {
@@ -101,7 +101,7 @@ int main(int, char**)
                                     "123-$&",
                                     std::regex_constants::format_first_only |
                                     std::regex_constants::format_no_copy);
-        assert(r.base() == buf+12);
+        assert(base(r) == buf+12);
         assert(buf == std::string("123-555-1234"));
     }
 

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 6f88854b68e6d..3ea0362227200 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,9 +30,9 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2";
-        char* r = m.format(cpp17_output_iterator<char*>(out),
-                    fmt, fmt + std::char_traits<char>::length(fmt)).base();
-        assert(r == out + 58);
+        auto r = m.format(cpp17_output_iterator<char*>(out),
+                    fmt, fmt + std::char_traits<char>::length(fmt));
+        assert(base(r) == out + 58);
         assert(std::string(out) == "prefix: ab, match: cdefghi, suffix: jk, m[1]: efg, m[2]: e");
     }
     {
@@ -43,9 +43,9 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2";
-        char* r = m.format(cpp17_output_iterator<char*>(out),
-                    fmt, fmt + std::char_traits<char>::length(fmt)).base();
-        assert(r == out + 54);
+        auto r = m.format(cpp17_output_iterator<char*>(out),
+                    fmt, fmt + std::char_traits<char>::length(fmt));
+        assert(base(r) == out + 54);
         assert(std::string(out) == "prefix: ab, match: cdefghi, suffix: jk, m[1]: , m[2]: ");
     }
     {
@@ -55,9 +55,9 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2";
-        char* r = m.format(cpp17_output_iterator<char*>(out),
-                    fmt, fmt + std::char_traits<char>::length(fmt)).base();
-        assert(r == out + 54);
+        auto r = m.format(cpp17_output_iterator<char*>(out),
+                    fmt, fmt + std::char_traits<char>::length(fmt));
+        assert(base(r) == out + 54);
         assert(std::string(out) == "prefix: ab, match: cdefghi, suffix: jk, m[1]: , m[2]: ");
     }
     {
@@ -67,10 +67,10 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2";
-        char* r = m.format(cpp17_output_iterator<char*>(out),
+        auto 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);
+                    std::regex_constants::format_sed);
+        assert(base(r) == out + 59);
         assert(std::string(out) == "prefix: $`, match: $cdefghi, suffix: $', m[1]: $1, m[2]: $2");
     }
     {
@@ -80,10 +80,10 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "match: &, m[1]: \\1, m[2]: \\2";
-        char* r = m.format(cpp17_output_iterator<char*>(out),
+        auto 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);
+                    std::regex_constants::format_sed);
+        assert(base(r) == out + 34);
         assert(std::string(out) == "match: cdefghi, m[1]: efg, m[2]: e");
     }
     {
@@ -94,10 +94,10 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "match: &, m[1]: \\1, m[2]: \\2";
-        char* r = m.format(cpp17_output_iterator<char*>(out),
+        auto 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);
+                    std::regex_constants::format_sed);
+        assert(base(r) == out + 30);
         assert(std::string(out) == "match: cdefghi, m[1]: , m[2]: ");
     }
     {
@@ -107,10 +107,10 @@ int main(int, char**)
 
         char out[100] = {0};
         const char fmt[] = "match: &, m[1]: \\1, m[2]: \\2";
-        char* r = m.format(cpp17_output_iterator<char*>(out),
+        auto 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);
+                    std::regex_constants::format_sed);
+        assert(base(r) == out + 30);
         assert(std::string(out) == "match: cdefghi, m[1]: , m[2]: ");
     }
 
@@ -122,9 +122,9 @@ 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(cpp17_output_iterator<wchar_t*>(out),
-                    fmt, fmt + std::char_traits<wchar_t>::length(fmt)).base();
-        assert(r == out + 58);
+        auto r = m.format(cpp17_output_iterator<wchar_t*>(out),
+                    fmt, fmt + std::char_traits<wchar_t>::length(fmt));
+        assert(base(r) == out + 58);
         assert(std::wstring(out) == L"prefix: ab, match: cdefghi, suffix: jk, m[1]: efg, m[2]: e");
     }
     {
@@ -134,10 +134,10 @@ 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(cpp17_output_iterator<wchar_t*>(out),
+        auto 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);
+                    std::regex_constants::format_sed);
+        assert(base(r) == out + 59);
         assert(std::wstring(out) == L"prefix: $`, match: $cdefghi, suffix: $', m[1]: $1, m[2]: $2");
     }
     {
@@ -147,10 +147,10 @@ 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(cpp17_output_iterator<wchar_t*>(out),
+        auto 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);
+                    std::regex_constants::format_sed);
+        assert(base(r) == out + 34);
         assert(std::wstring(out) == L"match: cdefghi, m[1]: efg, m[2]: e");
     }
 #endif // TEST_HAS_NO_WIDE_CHARACTERS

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 8517004ebb058..3c9f04a7ca02a 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,8 +32,8 @@ int main(int, char**)
 
         char out[100] = {0};
         nstr fmt("prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2");
-        char* r = m.format(cpp17_output_iterator<char*>(out), fmt).base();
-        assert(r == out + 58);
+        auto r = m.format(cpp17_output_iterator<char*>(out), fmt);
+        assert(base(r) == out + 58);
         assert(std::string(out) == "prefix: ab, match: cdefghi, suffix: jk, m[1]: efg, m[2]: e");
     }
     {
@@ -43,9 +43,8 @@ int main(int, char**)
 
         char out[100] = {0};
         nstr fmt("prefix: $`, match: $&, suffix: $', m[1]: $1, m[2]: $2");
-        char* r = m.format(cpp17_output_iterator<char*>(out),
-                    fmt, std::regex_constants::format_sed).base();
-        assert(r == out + 59);
+        auto r = m.format(cpp17_output_iterator<char*>(out), fmt, std::regex_constants::format_sed);
+        assert(base(r) == out + 59);
         assert(std::string(out) == "prefix: $`, match: $cdefghi, suffix: $', m[1]: $1, m[2]: $2");
     }
     {
@@ -55,9 +54,8 @@ int main(int, char**)
 
         char out[100] = {0};
         nstr fmt("match: &, m[1]: \\1, m[2]: \\2");
-        char* r = m.format(cpp17_output_iterator<char*>(out),
-                    fmt, std::regex_constants::format_sed).base();
-        assert(r == out + 34);
+        auto r = m.format(cpp17_output_iterator<char*>(out), fmt, std::regex_constants::format_sed);
+        assert(base(r) == out + 34);
         assert(std::string(out) == "match: cdefghi, m[1]: efg, m[2]: e");
     }
 
@@ -70,8 +68,8 @@ 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(cpp17_output_iterator<wchar_t*>(out), fmt).base();
-        assert(r == out + 58);
+        auto r = m.format(cpp17_output_iterator<wchar_t*>(out), fmt);
+        assert(base(r) == out + 58);
         assert(std::wstring(out) == L"prefix: ab, match: cdefghi, suffix: jk, m[1]: efg, m[2]: e");
     }
     {
@@ -81,9 +79,8 @@ 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(cpp17_output_iterator<wchar_t*>(out),
-                    fmt, std::regex_constants::format_sed).base();
-        assert(r == out + 59);
+        auto r = m.format(cpp17_output_iterator<wchar_t*>(out), fmt, std::regex_constants::format_sed);
+        assert(base(r) == out + 59);
         assert(std::wstring(out) == L"prefix: $`, match: $cdefghi, suffix: $', m[1]: $1, m[2]: $2");
     }
     {
@@ -93,9 +90,8 @@ int main(int, char**)
 
         wchar_t out[100] = {0};
         wstr fmt(L"match: &, m[1]: \\1, m[2]: \\2");
-        wchar_t* r = m.format(cpp17_output_iterator<wchar_t*>(out),
-                    fmt, std::regex_constants::format_sed).base();
-        assert(r == out + 34);
+        auto r = m.format(cpp17_output_iterator<wchar_t*>(out), fmt, std::regex_constants::format_sed);
+        assert(base(r) == out + 34);
         assert(std::wstring(out) == L"match: cdefghi, m[1]: efg, m[2]: e");
     }
 #endif // TEST_HAS_NO_WIDE_CHARACTERS

diff  --git a/libcxx/test/support/test_iterators.h b/libcxx/test/support/test_iterators.h
index 4a492205d361d..a272cc599caf1 100644
--- a/libcxx/test/support/test_iterators.h
+++ b/libcxx/test/support/test_iterators.h
@@ -41,7 +41,6 @@ class cpp17_output_iterator
     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 cpp17_output_iterator& i) { return i.it_; }
 
     template <class T>
@@ -80,7 +79,6 @@ class cpp17_input_iterator
     friend TEST_CONSTEXPR bool operator==(const cpp17_input_iterator& x, const cpp17_input_iterator& y) {return x.it_ == y.it_;}
     friend TEST_CONSTEXPR bool operator!=(const cpp17_input_iterator& x, const cpp17_input_iterator& y) {return x.it_ != y.it_;}
 
-    TEST_CONSTEXPR It base() const {return it_;} // TODO remove me
     friend TEST_CONSTEXPR It base(const cpp17_input_iterator& i) { return i.it_; }
 
     template <class T>
@@ -117,7 +115,6 @@ class forward_iterator
     friend TEST_CONSTEXPR bool operator==(const forward_iterator& x, const forward_iterator& y) {return x.it_ == y.it_;}
     friend TEST_CONSTEXPR bool operator!=(const forward_iterator& x, const forward_iterator& y) {return x.it_ != y.it_;}
 
-    TEST_CONSTEXPR It base() const {return it_;} // TODO remove me
     friend TEST_CONSTEXPR It base(const forward_iterator& i) { return i.it_; }
 
     template <class T>
@@ -153,7 +150,6 @@ class bidirectional_iterator
     friend TEST_CONSTEXPR bool operator==(const bidirectional_iterator& x, const bidirectional_iterator& y) {return x.it_ == y.it_;}
     friend TEST_CONSTEXPR bool operator!=(const bidirectional_iterator& x, const bidirectional_iterator& y) {return x.it_ != y.it_;}
 
-    TEST_CONSTEXPR It base() const {return it_;} // TODO remove me
     friend TEST_CONSTEXPR It base(const bidirectional_iterator& i) { return i.it_; }
 
     template <class T>
@@ -201,7 +197,6 @@ class random_access_iterator
     friend TEST_CONSTEXPR bool operator> (const random_access_iterator& x, const random_access_iterator& y) {return x.it_ >  y.it_;}
     friend TEST_CONSTEXPR bool operator>=(const random_access_iterator& x, const random_access_iterator& y) {return x.it_ >= y.it_;}
 
-    TEST_CONSTEXPR It base() const {return it_;} // TODO remove me
     friend TEST_CONSTEXPR It base(const random_access_iterator& i) { return i.it_; }
 
     template <class T>
@@ -510,7 +505,6 @@ class cpp20_input_iterator
     constexpr cpp20_input_iterator& operator++() { ++it_; return *this; }
     constexpr void operator++(int) { ++it_; }
 
-    constexpr const It& base() const& { return it_; } // TODO remove me
     friend constexpr It base(const cpp20_input_iterator& i) { return i.it_; }
 
     template <class T>


        


More information about the libcxx-commits mailing list