43#ifndef _RWSTD_NO_EXPLICIT_INSTANTIATION
64template <
class InputIterator1,
class InputIterator2,
class T>
66 const InputIterator1 &it1_dummy,
67 const InputIterator2 &it2_dummy,
71 static const char*
const it1name =
type_name (it1_dummy, (
T*)0);
72 static const char*
const it2name =
type_name (it2_dummy, (
T*)0);
74 rw_info (0, 0, 0,
"std::equal (%s, %1$s, %s%{?}, %s%{;})",
86 const std::size_t mid_inx =
N / 2;
88 for (std::size_t
i = 0;
i !=
N; ++
i) {
100 for (std::size_t
i = 0;
i !=
N; ++
i) {
108 const InputIterator1 first1 =
109 make_iter (buf1, buf1, buf1_end, it1_dummy);
111 const InputIterator1 last1 =
112 make_iter (buf1_end, buf1_end, buf1_end, it1_dummy);
114 const InputIterator2 first2 =
115 make_iter (buf2, buf2, buf2_end, it2_dummy);
120 res = std::equal (first1, last1, first2,
121 std::equal_to<UserClass>());
124 res = std::equal (first1, last1, first2);
128 int success = (
res &&
i < mid_inx) || (!
res && mid_inx <=
i);
130 const bool equal_expected =
i < mid_inx;
133 "%zu. equal(%s, %2$s, %s%{?}, %s%{;}) == %d, got %d",
134 i + 1, it1name, it2name,
136 equal_expected,
res);
141 "%zu. equal(%s, %2$s, %s%s%{?}, %s%{;}) complexity: "
143 i + 1, it1name, it2name,
151 ::operator
delete (buf1);
152 ::operator
delete (buf2);
164template <
class InputIterator,
class T>
167 static const std::size_t
N = 1024;
170 rw_note (0, __FILE__, __LINE__,
"InputIterator test disabled");
179 rw_note (0, __FILE__, __LINE__,
"ForwardIterator test disabled");
186 rw_note (0, __FILE__, __LINE__,
"BidirectionalIterator test disabled");
193 rw_note (0, __FILE__, __LINE__,
"RandomAccessIterator test disabled");
208 "template <class %s, class %s> "
209 "bool std::equal (%1$s, %1$s, %2$s%{?}, %s%{;})",
210 "InputIterator1",
"InputIterator2",
214 rw_note (0, __FILE__, __LINE__,
"InputIterator test disabled");
222 rw_note (0, __FILE__, __LINE__,
"ForwardIterator test disabled");
229 rw_note (0, __FILE__, __LINE__,
"BidirectionalIterator test disabled");
236 rw_note (0, __FILE__, __LINE__,
"RandomAccessIterator test disabled");
247run_test (
int,
char*[])
252 rw_note (0, __FILE__, __LINE__,
"Predicate test disabled");
263int main (
int argc,
char *argv[])
265 return rw_test (argc, argv, __FILE__,
268 "|-no-ForwardIterator#"
269 "|-no-BidirectionalIterator#"
270 "|-no-RandomAccessIterator#"
bool equal(const T &x, const U &y)
void test_equal(std::size_t N, const InputIterator1 &it1_dummy, const InputIterator2 &it2_dummy, T *, const char *predicate)
#define _RWSTD_STATIC_CAST(T, x)
#define _RWSTD_NAMESPACE(name)
T * make_iter(T *cur, const T *, const T *, T *)
_TEST_EXPORT int gen_seq_2lists()
_TEST_EXPORT int rw_test(int argc, char *argv[], const char *filename, const char *clause, const char *comment, int(*testfun)(int, char **), const char *optspec,...)
_TEST_EXPORT int rw_info(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_note(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_assert(int, const char *, int, const char *,...)
static _RWSTD_SIZE_T n_total_op_eq_