// 2007-01-19 Paolo Carlini <pcarlini@suse.de>
-// Copyright (C) 2007-2014 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;
- bool test __attribute__((unused)) = true;
+ 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',
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);
vector<wchar_t> v3(N3);
fill_n(v3.begin(), N3, L'\3');
VERIFY( equal(v3.begin(), v3.end(), A3) );
-#endif
}
int