]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 25_algorithms / fill_n / 1.cc
index d446e7a7b60eac33c259261be923471b1b20af5a..7e15ecfeae677df72bc6f7e8298201df79fb80d9 100644 (file)
@@ -1,6 +1,6 @@
 // 2007-01-19  Paolo Carlini  <pcarlini@suse.de>
 
-// Copyright (C) 2007-2017 Free Software Foundation, Inc.
+// Copyright (C) 2007-2024 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
 #include <algorithm>
 #include <vector>
 #include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
+// Non-scalar type to exercise partial specialization of fill_n implementation.
+struct Value
+{
+  Value(int n) : n(n) { }
+
+  operator int() const { return n; }
+
+private:
+  int n;
+};
 
 void
 test01()
 {
   using namespace std;
+  using __gnu_test::test_container;
+  using __gnu_test::output_iterator_wrapper;
 
   const int A1[] = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
   const int N1 = sizeof(A1) / sizeof(int);
-  
+
   int i1[N1];
-  fill_n(i1, N1, 3);
+  test_container<int, output_iterator_wrapper> c1(i1, i1 + N1);
+  fill_n(c1.begin(), N1, 3);
   VERIFY( equal(i1, i1 + N1, A1) );
 
   vector<int> v1(N1);
-  fill_n(v1.begin(), N1, 3);
+  fill_n(v1.begin(), N1, Value(3));
   VERIFY( equal(v1.begin(), v1.end(), A1) );
 
   const char A2[] = {'\3', '\3', '\3', '\3', '\3',
@@ -51,7 +66,6 @@ test01()
   fill_n(v2.begin(), N2, '\3');
   VERIFY( equal(v2.begin(), v2.end(), A2) );
 
-#ifdef _GLIBCXX_USE_WCHAR_T
   const wchar_t A3[] = {L'\3', L'\3', L'\3', L'\3', L'\3',
                        L'\3', L'\3', L'\3', L'\3', L'\3'};
   const int N3 = sizeof(A3) / sizeof(wchar_t);
@@ -63,7 +77,6 @@ test01()
   vector<wchar_t> v3(N3);
   fill_n(v3.begin(), N3, L'\3');
   VERIFY( equal(v3.begin(), v3.end(), A3) );
-#endif
 }
 
 int