39#ifndef _RWSTD_NO_REPLACEABLE_NEW_DELETE
49static int rw_opt_no_forward_iter;
51static int rw_opt_no_random_iter;
53static int rw_opt_no_insert_range;
54static int rw_opt_no_insert_at_end;
60typedef std::vector<UserClass, std::allocator<UserClass> >
Vector;
67inline Vector::size_type
85template <
class Iterator>
98template <
class Iterator>
100 Vector &vec,
const Vector::iterator &it,
103 std::size_t *n_copy, std::size_t *n_asgn)
105 std::size_t throw_after = 0;
107 const std::size_t
size = vec.size ();
108 const std::size_t capacity = vec.capacity ();
109 const Vector::const_iterator begin = vec.begin ();
111#ifndef _RWSTD_NO_REPLACEABLE_NEW_DELETE
125#ifndef _RWSTD_NO_EXCEPTIONS
130# ifndef _RWSTD_NO_REPLACEABLE_NEW_DELETE
143#ifndef _RWSTD_NO_EXCEPTIONS
144# ifndef _RWSTD_NO_REPLACEABLE_NEW_DELETE
157#ifndef _RWSTD_NO_EXT_VECTOR_INSERT_IN_PLACE
158# ifndef _RWSTD_NO_REPLACEABLE_NEW_DELETE
169 vec.insert (it, beg,
end);
172 vec.insert (it,
n, *
x);
178#ifndef _RWSTD_NO_EXCEPTIONS
184 "line %d: %s: size unexpectedly changed "
185 "from %zu to %zu after an exception",
186 __LINE__, fcall,
size, vec.size ());
189 "line %d: %s: capacity unexpectedly "
190 "changed from %zu to %zu after an exception",
191 __LINE__, fcall, capacity, vec.capacity ());
195 "line %d: %s: begin() unexpectedly "
196 "changed from after an exception by %d",
197 __LINE__, fcall, vec.begin () - begin);
201 "line %d: %s: leaked %d objects "
202 "after an exception",
214#ifndef _RWSTD_NO_EXCEPTIONS
215# ifndef _RWSTD_NO_REPLACEABLE_NEW_DELETE
223 "line %d: %s: failed to throw an expected exception",
248#ifndef _RWSTD_NO_REPLACEABLE_NEW_DELETE
262template <
class Iterator>
285 if (std::size_t (-1) == seqcap)
286 seqcap = vec.capacity ();
288 vec.reserve (seqcap);
291 const Vector::iterator it = vec.begin () +
off;
296 static const int cwidth =
sizeof (*xseq);
301 "%{?}begin()%{:}%{?}end()%{:}begin() + %zu%{;}%{;}, "
302 "%{?}%d%{:}%{?}\"%{X=*.*}\"%{:}%d, %d%{;}%{;})",
303 cwidth,
int (seqlen), -1, xseq,
305 n == -2, *ins,
n == -1,
306 cwidth,
int (inslen), -1, xins,
n, *ins);
316 const bool capchg = seqlen + (n < 0 ? inslen : n) > seqcap;
324 vec, it,
n, xins, dummy, dummy,
330 make_iter (xins, xins, xins + inslen, dummy);
333 make_iter (xins + inslen, xins, xins + inslen, dummy);
336 vec, it,
n, 0, first,
last,
344 vec, it,
n, xins, dummy, dummy,
350 "line %d: %s: size == %zu, got %zu",
351 __LINE__, fcall, reslen, vec.size ());
354 rw_assert (capchg == (vec.capacity () != seqcap),
355 0,
line,
"line %d: %s: capacity %c = %zu, got %zu",
356 __LINE__, fcall, capchg ?
'!' :
'=', seqcap, vec.capacity ());
359 const Vector::const_pointer resbeg = vec.size () ? &*vec.begin () : 0;
360 const Vector::const_pointer resend = resbeg + vec.size ();
362 for (Vector::const_pointer
ptr = resbeg;
ptr != resend; ++
ptr) {
364 typedef unsigned char UChar;
368 char*
const got =
new char [vec.size () + 1];
370 for (Vector::const_pointer
p = resbeg;
p != resend; ++
p) {
371 got [
p - resbeg] = char (
p->data_.val_);
374 got [vec.size ()] =
'\0';
377 "line %d: %s: expected %{#s}, got %{#s}",
378 __LINE__, fcall,
res, got);
401 std::size_t expect_copy;
402 std::size_t expect_asgn;
412 expect_copy = reslen;
423 expect_copy =
n < 0 ? inslen :
n;
424 expect_asgn =
n && inslen ? reslen -
off : 0;
429 expect_copy = n_copy;
430 expect_asgn = n_asgn;
439 "line %d: %s: expected at most %zu "
440 "invocation(s) of UserClass::UserClass(const UserClass&), "
441 "got %zu", __LINE__, fcall, expect_copy, n_copy);
445 "line %d: %s: expected at most %zu invocation(s) "
446 "of UserClass::operator=(const UserClass&), got %zu",
447 __LINE__, fcall, expect_asgn, n_asgn);
461 "std::vector<UserClass>::insert(iterator, const_reference)");
464#define TEST(seq, seqcap, off, ins, res) do { \
465 const char insseq [] = { ins, '\0' }; \
466 test_insert (__LINE__, (UserClass*)0, -2, \
467 seq, sizeof seq - 1, \
468 std::size_t (seqcap), off, \
470 res, sizeof res - 1); \
480 TEST (
"", -1, +0,
'a',
"a");
481 TEST (
"b", -1, +0,
'a',
"ab");
482 TEST (
"bc", -1, +0,
'a',
"abc");
483 TEST (
"bcd", -1, +0,
'a',
"abcd");
484 TEST (
"bcde", -1, +0,
'a',
"abcde");
486 TEST (
"a", -1, +1,
'b',
"ab");
487 TEST (
"ac", -1, +1,
'b',
"abc");
488 TEST (
"acd", -1, +1,
'b',
"abcd");
489 TEST (
"acde", -1, +1,
'b',
"abcde");
491 TEST (
"ab", -1, +2,
'c',
"abc");
492 TEST (
"abd", -1, +2,
'c',
"abcd");
493 TEST (
"abde", -1, +2,
'c',
"abcde");
495 TEST (
"abc", -1, +3,
'd',
"abcd");
496 TEST (
"abce", -1, +3,
'd',
"abcde");
498 TEST (
"abcd", -1, +4,
'e',
"abcde");
504 "std::vector<UserClass>::insert(iterator, "
505 "size_type, const_reference)");
508#define TEST(seq, seqcap, off, n, ins, res) do { \
509 const char insseq [] = { ins, '\0' }; \
510 test_insert (__LINE__, (UserClass*)0, n, \
511 seq, sizeof seq - 1, \
512 std::size_t (seqcap), off, \
514 res, sizeof res - 1); \
525 TEST (
"", -1, +0, 0,
'a',
"");
526 TEST (
"", -1, +0, 1,
'a',
"a");
527 TEST (
"", -1, +0, 2,
'b',
"bb");
528 TEST (
"", -1, +0, 3,
'c',
"ccc");
530 TEST (
"a", -1, +0, 0,
'a',
"a");
531 TEST (
"b", -1, +0, 1,
'a',
"ab");
532 TEST (
"b", -1, +0, 2,
'a',
"aab");
533 TEST (
"b", -1, +0, 3,
'a',
"aaab");
535 TEST (
"ab", -1, +1, 0,
'b',
"ab");
536 TEST (
"ac", -1, +1, 1,
'b',
"abc");
537 TEST (
"ac", -1, +1, 2,
'b',
"abbc");
538 TEST (
"ac", -1, +1, 3,
'b',
"abbbc");
540 TEST (
"abcd", -1, +2, 0,
'c',
"abcd");
541 TEST (
"abde", -1, +2, 1,
'c',
"abcde");
542 TEST (
"abde", -1, +2, 2,
'c',
"abccde");
543 TEST (
"abde", -1, +2, 3,
'c',
"abcccde");
548template <
class Iterator>
554 "std::vector<UserClass>::insert(iterator, %s, %s)",
558#define TEST(seq, seqcap, off, ins, res) \
559 test_insert (__LINE__, dummy, -1, \
560 seq, sizeof seq - 1, \
561 std::size_t (seqcap), off, \
562 ins, sizeof ins - 1, \
572 TEST (
"", -1, +0,
"",
"");
573 TEST (
"", -1, +0,
"a",
"a");
574 TEST (
"", -1, +0,
"ab",
"ab");
575 TEST (
"", -1, +0,
"abc",
"abc");
577 TEST (
"A", -1, +0,
"",
"A");
578 TEST (
"B", -1, +0,
"a",
"aB");
579 TEST (
"C", -1, +0,
"ab",
"abC");
580 TEST (
"D", -1, +0,
"abc",
"abcD");
582 TEST (
"AB", -1, +0,
"",
"AB");
583 TEST (
"AB", -1, +0,
"c",
"cAB");
584 TEST (
"AB", -1, +0,
"cd",
"cdAB");
585 TEST (
"AB", -1, +0,
"cde",
"cdeAB");
587 TEST (
"A", -1, +1,
"",
"A");
588 TEST (
"A", -1, +1,
"b",
"Ab");
589 TEST (
"A", -1, +1,
"bc",
"Abc");
590 TEST (
"A", -1, +1,
"bcd",
"Abcd");
592 TEST (
"AB", -1, +1,
"",
"AB");
593 TEST (
"AC", -1, +1,
"b",
"AbC");
594 TEST (
"AD", -1, +1,
"bc",
"AbcD");
595 TEST (
"AE", -1, +1,
"bcd",
"AbcdE");
597 TEST (
"AB", -1, +2,
"",
"AB");
598 TEST (
"AB", -1, +2,
"c",
"ABc");
599 TEST (
"AB", -1, +2,
"cd",
"ABcd");
600 TEST (
"AB", -1, +2,
"cde",
"ABcde");
602 TEST (
"ABC", -1, +2,
"",
"ABC");
603 TEST (
"ABD", -1, +2,
"c",
"ABcD");
604 TEST (
"ABE", -1, +2,
"cd",
"ABcdE");
605 TEST (
"ABF", -1, +2,
"cde",
"ABcdeF");
607 TEST (
"ABC", -1, +3,
"",
"ABC");
608 TEST (
"ABC", -1, +3,
"d",
"ABCd");
609 TEST (
"ABC", -1, +3,
"de",
"ABCde");
610 TEST (
"ABC", -1, +3,
"def",
"ABCdef");
613#define UPPER "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
614#define LOWER "abcdefghijklmnopqrstuvwxyz"
630 TEST (
UPPER, -1, +0,
"!",
"!ABCDEFGHIJKLMNOPQRSTUVWXYZ");
631 TEST (
UPPER, -1, +1,
"!",
"A!BCDEFGHIJKLMNOPQRSTUVWXYZ");
632 TEST (
UPPER, -1, +2,
"!",
"AB!CDEFGHIJKLMNOPQRSTUVWXYZ");
633 TEST (
UPPER, -1, +3,
"!",
"ABC!DEFGHIJKLMNOPQRSTUVWXYZ");
634 TEST (
UPPER, -1, +9,
"!",
"ABCDEFGHI!JKLMNOPQRSTUVWXYZ");
635 TEST (
UPPER, -1, +25,
"!",
"ABCDEFGHIJKLMNOPQRSTUVWXY!Z");
636 TEST (
UPPER, -1, +26,
"!",
"ABCDEFGHIJKLMNOPQRSTUVWXYZ!");
638 TEST (
UPPER, -1, +0,
"12",
"12ABCDEFGHIJKLMNOPQRSTUVWXYZ");
639 TEST (
UPPER, -1, +1,
"12",
"A12BCDEFGHIJKLMNOPQRSTUVWXYZ");
640 TEST (
UPPER, -1, +2,
"12",
"AB12CDEFGHIJKLMNOPQRSTUVWXYZ");
641 TEST (
UPPER, -1, +3,
"12",
"ABC12DEFGHIJKLMNOPQRSTUVWXYZ");
642 TEST (
UPPER, -1, +9,
"12",
"ABCDEFGHI12JKLMNOPQRSTUVWXYZ");
643 TEST (
UPPER, -1, +25,
"12",
"ABCDEFGHIJKLMNOPQRSTUVWXY12Z");
644 TEST (
UPPER, -1, +26,
"12",
"ABCDEFGHIJKLMNOPQRSTUVWXYZ12");
646 TEST (
UPPER, -1, +0,
"123",
"123ABCDEFGHIJKLMNOPQRSTUVWXYZ");
647 TEST (
UPPER, -1, +1,
"123",
"A123BCDEFGHIJKLMNOPQRSTUVWXYZ");
648 TEST (
UPPER, -1, +2,
"123",
"AB123CDEFGHIJKLMNOPQRSTUVWXYZ");
649 TEST (
UPPER, -1, +3,
"123",
"ABC123DEFGHIJKLMNOPQRSTUVWXYZ");
650 TEST (
UPPER, -1, +9,
"123",
"ABCDEFGHI123JKLMNOPQRSTUVWXYZ");
651 TEST (
UPPER, -1, +25,
"123",
"ABCDEFGHIJKLMNOPQRSTUVWXY123Z");
652 TEST (
UPPER, -1, +26,
"123",
"ABCDEFGHIJKLMNOPQRSTUVWXYZ123");
693 "std::vector<UserClass>::insert (end(), const_reference)");
695 typedef Vector::size_type size_type;
699 size_type nextcap = 0;
702 for (
int i = 0;
i != 8; ++
i) {
709 nextcap = _RW::__rw_new_capacity (nextcap + 1, (
Vector*)0);
714 while (
v.size () < nextcap) {
719 v.insert (
v.end (), Vector::value_type ());
721 rw_assert (nextcap >=
v.capacity (), 0, __LINE__,
722 "vector<UserClass>::insert (end(), value_type()); "
723 "capacity == %zu, got %zu after %zu insertions",
724 nextcap,
v.capacity (),
v.size ());
726 if (nextcap <
v.capacity ())
break;
734 "vector<UserClass>::insert (end(), value_type()); "
735 "expected 1 invocation of the copy ctor, got %zu",
740 "vector<UserClass>::insert (end(), value_type()); "
741 "expected 0 invocations of the assignment "
742 "operator, got %zu", n_asgn);
746 v.insert (
v.end (), Vector::value_type ());
748 rw_assert (
v.capacity () > nextcap, 0, __LINE__,
749 "vector<UserClass>::insert (end(), value_type()); "
750 "capacity > %zu, got %zu after %zu insertions",
751 nextcap,
v.capacity (),
v.size ());
762 rw_info (0, 0, 0,
"std::vector<UserClass>::insert(iterator, "
764 rw_info (0, 0, 0,
"std::ector<UserClass>::insert(iterator, size_type, "
766 rw_info (0, 0, 0,
"template <class InputIterator> "
767 "std::vector<UserClass>::insert"
768 "(iterator, InputIterator, InputIterator)");
769 rw_info (0, 0, 0,
"std::vector<UserClass>::erase(iterator)");
770 rw_info (0, 0, 0,
"std::vector<UserClass>::erase(iterator, iterator)");
772 typedef std::vector<UserClass, std::allocator<UserClass> >
Vector;
773 typedef Vector::iterator VectorIter;
774 typedef Vector::size_type VectorSize;
782 VectorIter it = v0.begin ();
783 VectorIter it1 =
v1.begin ();
784 VectorIter it2 =
v2.begin ();
790 VectorSize v0_size = v0.size ();
791 VectorSize v0_cap = v0.capacity ();
792 VectorIter v0_beg = v0.begin ();
800 it = v0.insert (it,
val);
804 rw_assert (v0_cap <= v0.size () || v0_beg == v0.begin (),
806 "vector<UserClass>::insert(iterator, const_reference) "
807 "invalidated iterators w/o reallocation");
812 "vector<UserClass>::insert(iterator, const_reference); "
813 "new size = %zu, expected %zu", v0.size (), v0_size + 1);
818 "vector<UserClass>::insert(iterator, const_reference); "
819 "returned iterator doesn't point at inserted value");
824 if(v0.begin () != v0_beg) {
827 "vector<UserClass>::insert() - fails complexity "
828 "copy_ctor called %zu; size = %zu",
834 == std::size_t (v0.end() - it),
836 "vector<UserClass>::insert(iterator, const_reference) - "
837 "fails complexity copy_ctor and assign called "
845 Vector::value_type next_val;
851 if (it != v0.end () && ++it1 != v0.end())
854 VectorSize num_left = v0.end () - it - 1;
857 v0_size = v0.size ();
864 rw_assert (v0.size () != v0_size - 1, 0, __LINE__,
865 "vector<UserClass>::erase(iterator); new size = %zu, "
866 "expected %zu", v0.size (), v0_size - 1);
870 rw_assert (it == v0.end () || *it == next_val, 0, __LINE__,
871 "vector<UserClass>::erase(iterator); "
872 "returned iterator doesn't point at next value ");
879 "vector<UserClass>::erase(iterator) - fails "
880 "complexity assign called %zu correct = %zu",
889 "vector<UserClass>::erase(iterator) - "
890 "fails complexity destructor called %zu "
895 if (
i % 2 && it != v0.end ())
901 VectorSize v1_size =
v1.size ();
902 VectorSize v1_cap =
v1.capacity ();
903 VectorIter v1_beg =
v1.begin ();
909 VectorSize
offset = (
v1.size () ? (
i / 2) %
v1.size () : 0);
921 "vector<UserClass>::insert(iterator, const_reference) "
922 "invalidated iterators w/o reallocation");
927 "vector<UserClass>::insert(iterator, const_reference); "
928 "new size = %zu, expected %zu",
v1.size (), v1_size +
i);
933 if (
v1.begin () != v1_beg) {
936 "vector<UserClass>::insert(iterator, const_reference) - "
937 "fails complexity copy_ctor called %zu size =%zu",
945 "vector<UserClass>::insert(iterator, const_reference) - "
946 "fails complexity copy_ctor and assign "
947 "called %zu correct = %zu",
953 VectorSize old_size =
v1.size();
957 Vector::value_type expected_val =
958 v1.size () ? *(
v1.begin () + (
v1.size () / 2)) : new_val;
964 VectorSize num_destroy =
v1.size () / 2;
966 VectorSize num_left =
967 v1.end () - (
v1.begin () + (
v1.size () / 2));
971 it1 =
v1.erase(
v1.begin (),
v1.begin () + (
v1.size () / 2));
974 rw_assert (
v1.size () == old_size - (old_size / 2),
976 "vector<UserClass>::erase(iterator, iterator); "
977 "new size = %zu, expected %zu",
v1.size (),
978 old_size - (old_size / 2));
982 rw_assert (
v1.size () == 0 || *it1 == expected_val,
984 "vector<UserClass>::erase(iterator, iterator); "
985 "returned iterator doesn't point at next value ");
992 "vector<UserClass>::erase(iterator, iterator) - fails "
993 "complexity assign called %zu correct = %zu",
1000 "vector<UserClass>::erase(iterator, iterator) - fails "
1001 "complexity destructor called %zu correct = %zu",
1007#if !defined (_MSC_VER) || _MSC_VER >= 1300
1011 VectorSize v2_size =
v2.size ();
1012 VectorSize v2_cap =
v2.capacity ();
1013 VectorIter v2_beg =
v2.begin ();
1016 v0.insert (v0.begin(),
val);
1022 "vector<UserClass>::insert(iterator, const_reference) "
1023 "invalidated iterators w/o reallocation");
1026 v2.insert(
v2.begin(), v0.begin(), v0.end());
1028 if (
v2.begin () != v2_beg)
1031 "vector<UserClass>::insert(iterator, const_reference) - "
1032 "fails complexity copy_ctor called %zu size =%zu",
1037 == v0.size () + (
v2.end() - (
v2.begin() + v0.size())),
1039 "vector<UserClass>::insert(iterator, const_reference) - "
1040 "fails complexity copy_ctor and assign called "
1041 "%zu correct = %zu",
1044 v0.size() + (
v2.end() - (
v2.begin() + v0.size())));
1050 "vector<UserClass>::insert(iterator, const_reference); "
1051 "new size = %zu, expected %zu",
v2.size (),
1052 v2_size + v0.size ());
1054 VectorSize old_size =
v2.size();
1056 VectorIter expected_it =
v2.begin () + (
v2.size () / 2) ;
1058 Vector::value_type expected_val = *expected_it;
1062 VectorSize num_destroy =
v2.size () / 2;
1064 VectorSize num_left =
1065 v2.end () - (
v2.begin () + (
v2.size () / 2));
1069 it2 =
v2.erase(
v2.begin (),
v2.begin () + (
v2.size () / 2));
1072 rw_assert (
v2.size () == v2_size + v0.size() - (old_size / 2),
1074 "vector<UserClass>::erase(iterator, iterator); "
1075 "new size = %zu, expected %zu",
1076 v2.size (), v2_size +
i - (old_size / 2));
1078 rw_assert (
v2.size () == 0 || *it2 == expected_val,
1080 "vector<UserClass>::erase(iterator, iterator); "
1081 "returned iterator doesn't point at next value ");
1085 "vector<UserClass>::erase(iterator, iterator) - "
1086 "fails complexity assign called %zu correct = %zu",
1091 "vector<UserClass>::erase(iterator, iterator) - "
1092 "fails complexity destructor called %zu correct = %zu",
1098 rw_assert (success, 0, __LINE__,
"vector<UserClass>::insert()");
1099 rw_assert (success, 0, __LINE__,
"vector<UserClass>::erase()");
1104template <
class T,
class Allocator>
1107 rw_info (0, 0, 0,
"std::vector<UserClass>::push_back(const_reference)");
1109 typedef std::vector<T, Allocator> MyVector;
1110 typedef typename MyVector::value_type ValueType;
1111 typedef typename MyVector::size_type SizeType;
1112 typedef typename MyVector::pointer
Pointer;
1113 typedef typename MyVector::const_pointer ConstPointer;
1114 typedef typename MyVector::iterator
Iterator;
1119 const ValueType
val = ValueType ();
1121 for (SizeType
i = 0;
i != SizeType (4096); ++
i) {
1132 "Expected std::vector::size to "
1133 "compare equal; got %zu and %zu",
1134 v1.size (),
v2.size ());
1138 "Expected std::vector::capacity to "
1139 "compare equal; got %zu and %zu",
1140 v1.capacity (),
v2.capacity ());
1144 "Expected std::vector::end() - std::vector::begin() "
1145 "to compare equal; got %zu and %zu",
1146 v1.end () -
v1.begin (),
v2.end () -
v2.begin ());
1155 if (rw_opt_no_complexity) {
1156 rw_note (0, 0, __LINE__,
"complexity test disabled");
1162 if (rw_opt_no_push_back) {
1163 rw_note (0, 0, __LINE__,
"push_back test disabled");
1169 if (rw_opt_no_insert) {
1170 rw_note (0, 0, __LINE__,
"insert test disabled");
1176 if (rw_opt_no_insert_range) {
1177 rw_note (0, 0, __LINE__,
"insert range test disabled");
1180 if (rw_opt_no_input_iter) {
1182 "InputIterator test disabled");
1188 if (rw_opt_no_forward_iter) {
1190 "ForwardIterator test disabled");
1196 if (rw_opt_no_bidir_iter) {
1198 "BidirectionalIterator test disabled");
1204 if (rw_opt_no_random_iter) {
1206 "RandomAccessIterator test disabled");
1214 if (rw_opt_no_insert_at_end) {
1215 rw_note (0, 0, __LINE__,
"insert at end test disabled");
1228 return rw_test (argc, argv, __FILE__,
1229 "lib.vector.modifiers",
1234 "|-no-insert_range# "
1235 "|-no-insert_at_end# "
1238 "|-no-forward_iter# "
1240 "|-no-random_iter# "
1244 &rw_opt_no_insert_range,
1245 &rw_opt_no_insert_at_end,
1248 &rw_opt_no_forward_iter,
1250 &rw_opt_no_random_iter,
void count(T, T, const U &,...)
std::vector< UserClass, std::allocator< UserClass > > Vector
void test_push_back(const std::vector< T, Allocator > *)
void test_insert_at_end()
bool is_forward(const Iterator &it)
void exception_loop(int line, const char *fcall, bool capchg, Vector &vec, const Vector::iterator &it, int n, const UserClass *x, const Iterator &first, const Iterator &last, std::size_t *n_copy, std::size_t *n_asgn)
void test_insert_range(const Iterator &dummy)
#define TEST(seq, seqcap, off, ins, res)
Vector::size_type new_capacity
bool is_forward_category(std::input_iterator_tag)
std::vector< UserClass, std::allocator< UserClass > > Vector
void run_test(const ForwardIterator &dummy, T *, Predicate *pred)
#define _RWSTD_UNUSED(arg)
#define _RWSTD_ASSERT(ignore)
#define _RWSTD_CONST_CAST(T, x)
#define _RWSTD_SPECIALIZED_FUNCTION
#define _RWSTD_ITERATOR_CATEGORY(iterT, ignore)
_RWSTD_SPECIALIZED_FUNCTION Vector::size_type __rw_new_capacity< Vector >(Vector::size_type n, const Vector *)
T * make_iter(T *cur, const T *, const T *, T *)
T * copy_iter(T *ptr, const T *)
_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 *,...)
_TEST_EXPORT rwt_free_store * rwt_get_free_store(rwt_free_store *)
_TEST_EXPORT int rw_asnprintf(char **pbuf, _RWSTD_SIZE_T *pbufsize, const char *fmt,...)
static _RWSTD_SIZE_T n_total_op_assign_
static UserClass from_char(char c)
static _RWSTD_SIZE_T count_
static void reset_totals()
static _RWSTD_SIZE_T n_total_copy_ctor_
_RWSTD_SIZE_T * throw_at_calls_[2]
_RWSTD_SIZE_T new_calls_[2]