290 iterator_type1& begin, iterator_type2& end)
292 printf(
"**** test_iterator_arithmetic:\n");
300 iterator_type1 citer1 = begin;
301 iterator_type1 citer2 = begin;
319 REQUIRE( *citer2 == begin[0] );
324 REQUIRE( *citer2 == *(begin+1) );
325 REQUIRE( *citer2 == begin[1] );
330 REQUIRE( *citer2 == *(begin+2) );
331 REQUIRE( *citer2 == begin[2] );
336 REQUIRE( *citer2 == *(begin+3) );
337 REQUIRE( *citer2 == begin[3] );
344 REQUIRE( *citer2 == *(begin+0) );
345 REQUIRE( *citer2 == begin[0] );
363 iterator_type1 citer1 = begin;
364 iterator_type1 citer2 = begin;
366 REQUIRE( citer1 == citer1 );
367 REQUIRE( citer2 == citer1 );
370 REQUIRE( citer2 != citer1 );
371 REQUIRE( citer1 != citer2 );
372 REQUIRE( citer2 > citer1 );
373 REQUIRE( citer2 >= citer1 );
374 REQUIRE( citer1 < citer2 );
375 REQUIRE( citer1 <= citer2 );
376 REQUIRE( ( citer2 - citer1 ) == 1);
377 REQUIRE( ( citer1 - citer2 ) == -1);
462 typedef typename T::size_type size_type;
463 typedef typename T::const_iterator citer_type;
464 typedef typename T::iterator iter_type;
465 typedef typename T::difference_type diff_type;
466 typedef typename T::value_type value_type;
467 typedef typename T::storage_t storage_t;
469 printf(
"**** test_mutable_iterator_ops(CoW): %s\n", type_id.c_str());
473 iter_type begin = data.begin();
474 iter_type end = begin.end();
475 diff_type data_size =
static_cast<diff_type
>(data.size());
476 diff_type begin_size =
static_cast<diff_type
>(begin.size());
477 diff_type end_size =
static_cast<diff_type
>(end.size());
478 REQUIRE( begin_size == data_size );
479 REQUIRE( end_size == data_size );
480 REQUIRE( end - begin == data_size );
481 REQUIRE( end - end_size == begin );
482 REQUIRE( begin + begin_size == end );
483 REQUIRE( *( end - end_size ) == *begin );
484 REQUIRE( *( begin + begin_size - 1 ) == *( end - 1 ) );
485 REQUIRE( end[-end_size] == begin[0] );
486 REQUIRE( begin[begin_size - 1] == end[-1] );
495 iter_type begin = data.begin();
496 iter_type end = begin.end();
497 citer_type cbegin = begin.immutable();
498 citer_type cend = cbegin.cend();
523 citer_type citer0 = data.cbegin();
525 T data_exp = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
526 REQUIRE(data == data_exp);
528 REQUIRE( *data.snapshot() == citer0.storage() );
530 iter_type iter = data.begin();
531 size_type size_pre = iter.size();
532 value_type elem = iter.end()[-2];
534 REQUIRE( iter != citer0 );
535 REQUIRE( iter.storage() == citer0.storage() );
536 REQUIRE( iter.storage() == *data.snapshot() );
538 REQUIRE( iter.dist_begin() == 0 );
539 REQUIRE( iter.dist_end() ==
static_cast<diff_type
>(size_pre));
545 REQUIRE( iter.size() == size_pre-1 );
546 REQUIRE( iter == iter.end() );
547 REQUIRE( iter == iter.begin()+size_pre-1 );
548 REQUIRE( iter.dist_begin() ==
static_cast<diff_type
>(size_pre)-1 );
549 REQUIRE( iter.dist_end() == 0 );
550 REQUIRE( iter[-1] == elem );
552 storage_t data_exp = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
553 REQUIRE(iter.storage() == data_exp);
555 REQUIRE(iter.storage() != citer0.storage());
556 REQUIRE(iter.storage() != *data.snapshot());
559 REQUIRE( iter == iter.end() );
560 size_pre = iter.size();
561 REQUIRE( iter.dist_begin() ==
static_cast<diff_type
>(size_pre));
562 REQUIRE( iter.dist_end() == 0);
567 iter.insert(data2.cbegin(), data2.cbegin()+data2.size());
569 REQUIRE( iter.size() == size_pre+10 );
570 REQUIRE( iter == iter.end()-10 );
571 REQUIRE( iter.dist_begin() ==
static_cast<diff_type
>(size_pre));
572 REQUIRE( iter.dist_end() == 10);
574 storage_t data_exp = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
575 REQUIRE(iter.storage() == data_exp);
579 REQUIRE( iter == iter.end()-10 );
580 size_pre = iter.size();
584 REQUIRE( iter.size() == size_pre-10 );
585 REQUIRE( iter == iter.end() );
587 storage_t data_exp = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
588 REQUIRE(iter.storage() == data_exp);
592 size_pre = iter.size();
594 REQUIRE( iter == iter.begin() );
595 elem = iter.begin()[1];
597 REQUIRE( iter.size() == size_pre-1 );
598 REQUIRE( iter == iter.begin() );
599 REQUIRE( *iter == elem );
601 storage_t data_exp = { 2, 3, 4, 5, 6, 7, 8, 9 };
602 REQUIRE(iter.storage() == data_exp);
606 size_pre = iter.size();
607 REQUIRE( iter == iter.begin() );
608 elem = iter.end()[-1];
612 citer_type data2_iter = data2.cbegin();
613 iter.push_back(data2_iter[0]);
614 iter.push_back(data2_iter[1]);
615 iter.push_back(data2_iter[2]);
616 REQUIRE( iter.size() == size_pre+3 );
617 REQUIRE( iter == iter.end() );
618 REQUIRE( iter[-3] == data2_iter[0] );
619 REQUIRE( iter[-2] == data2_iter[1] );
620 REQUIRE( iter[-1] == data2_iter[2] );
623 storage_t data_exp = { 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3 };
624 REQUIRE(iter.storage() == data_exp);
628 size_pre = iter.size();
629 REQUIRE( iter == iter.end() );
632 REQUIRE( iter.size() == size_pre-3 );
633 REQUIRE( iter == iter.end() );
635 storage_t data_exp = { 2, 3, 4, 5, 6, 7, 8, 9 };
636 REQUIRE(iter.storage() == data_exp);
640 size_pre = iter.size();
641 REQUIRE( iter == iter.end() );
643 value_type elem0 = iter.begin()[0];
644 iter.push_back( std::move(elem0));
647 value_type elem0 = iter.begin()[1];
648 iter.push_back( std::move(elem0));
651 value_type elem0 = iter.begin()[2];
652 iter.push_back( std::move(elem0));
654 REQUIRE( iter.size() == size_pre+3 );
655 REQUIRE( iter == iter.end() );
656 REQUIRE( iter[-3] == iter.begin()[0] );
657 REQUIRE( iter[-2] == iter.begin()[1] );
658 REQUIRE( iter[-1] == iter.begin()[2] );
660 storage_t data_exp = { 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4 };
661 REQUIRE(iter.storage() == data_exp);
665 REQUIRE( iter == iter.end() );
670 REQUIRE( iter == iter.end() );
672 storage_t data_exp = { 2, 3, 4, 5, 6, 7, 8, 9 };
673 REQUIRE(iter.storage() == data_exp);
679 REQUIRE( iter == iter.begin()+5 );
680 REQUIRE( iter.dist_begin() == 5 );
682 size_pre = iter.size();
686 citer_type data2_iter = data2.cbegin();
687 iter.insert(data2_iter[0]);
688 iter.insert(data2_iter[1]);
689 iter.insert(data2_iter[2]);
690 REQUIRE( iter.size() == size_pre+3 );
691 REQUIRE( iter == iter.begin()+5 );
693 REQUIRE( iter[5] == data2_iter[2] );
694 REQUIRE( iter[6] == data2_iter[1] );
695 REQUIRE( iter[7] == data2_iter[0] );
698 storage_t data_exp = { 2, 3, 4, 5, 6, 3, 2, 1, 7, 8, 9 };
699 REQUIRE(iter.storage() == data_exp);
704 REQUIRE( iter == iter.begin()+5 );
705 size_pre = iter.size();
709 iter.insert(data2.cbegin(), data2.cbegin()+3);
711 REQUIRE( iter.size() == size_pre+3 );
712 REQUIRE( iter == iter.begin()+5 );
714 storage_t data_exp = { 2, 3, 4, 5, 6, 1, 2, 3, 3, 2, 1, 7, 8, 9 };
715 REQUIRE(iter.storage() == data_exp);
719 REQUIRE( iter == iter.begin()+5 );
720 size_pre = iter.size();
722 REQUIRE( iter.size() == size_pre-6 );
723 REQUIRE( iter == iter.begin()+5 );
725 storage_t data_exp = { 2, 3, 4, 5, 6, 7, 8, 9 };
726 REQUIRE(iter.storage() == data_exp);
730 size_pre = iter.size();
731 REQUIRE( iter == iter.begin()+5 );
732 iter.emplace(
static_cast<uint64_t
>(2) );
733 iter.emplace(
static_cast<uint64_t
>(3) );
734 iter.emplace(
static_cast<uint64_t
>(4) );
735 REQUIRE( iter == iter.begin()+5 );
736 REQUIRE( iter[0] == 4 );
737 REQUIRE( iter[1] == 3 );
738 REQUIRE( iter[2] == 2 );
740 storage_t data_exp = { 2, 3, 4, 5, 6, 4, 3, 2, 7, 8, 9 };
741 REQUIRE(iter.storage() == data_exp);
745 size_pre = iter.size();
746 REQUIRE( iter == iter.begin()+5 );
747 iter.emplace_back(
static_cast<uint64_t
>(2) );
748 iter.emplace_back(
static_cast<uint64_t
>(3) );
749 iter.emplace_back(
static_cast<uint64_t
>(4) );
750 REQUIRE( iter == iter.end() );
751 REQUIRE( iter[-1] == 4 );
752 REQUIRE( iter[-2] == 3 );
753 REQUIRE( iter[-3] == 2 );
755 storage_t data_exp = { 2, 3, 4, 5, 6, 4, 3, 2, 7, 8, 9, 2, 3, 4 };
756 REQUIRE(iter.storage() == data_exp);
760 size_pre = iter.size();
761 REQUIRE( iter == iter.end() );
763 REQUIRE( iter == iter.end()-10 );
765 while( iter != iter.end() ) {
768 REQUIRE( iter.size() == size_pre - 10 );
771 storage_t data_exp = { 2, 3, 4, 5 };
772 REQUIRE(iter.storage() == data_exp);
777 REQUIRE( iter != data.cbegin() );
778 REQUIRE( iter.storage() != *data.snapshot() );
780 T data_exp = { 2, 3, 4, 5 };
781 REQUIRE(data != data_exp);
785 T data_exp = { 2, 3, 4, 5 };
786 REQUIRE(data == data_exp);
797 typedef typename T::iterator iter_type;
798 typedef typename T::const_iterator citer_type;
799 typedef typename T::difference_type diff_type;
801 printf(
"**** test_mutable_iterator_ops(___): %s\n", type_id.c_str());
805 iter_type begin = data.begin();
806 iter_type end = data.end();
807 diff_type data_size =
static_cast<diff_type
>(data.size());
808 REQUIRE( end - begin == data_size );
809 REQUIRE( end - data_size == begin );
810 REQUIRE( begin + data_size == end );
811 REQUIRE( *( end - data_size ) == *begin );
812 REQUIRE( *( begin + data_size - 1 ) == *(end -1) );
821 iter_type begin = data.begin();
822 iter_type end = data.end();
823 citer_type cend = data.cend();
824 citer_type cbegin = data.cbegin();
849 T data_exp = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
850 REQUIRE(data == data_exp);
853 iter_type iter = data.end();
854 typename T::size_type size_pre = data.size();
855 typename T::value_type elem = iter[-2];
862 REQUIRE( data.size() == size_pre-1 );
863 REQUIRE( iter == data.end() );
864 REQUIRE( iter == data.begin()+size_pre-1 );
865 REQUIRE( iter[-1] == elem );
867 T data_exp = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
868 REQUIRE(data == data_exp);
872 REQUIRE( iter == data.end() );
873 size_pre = data.size();
877 iter = data.insert(iter, data2.cbegin(), data2.cbegin()+data2.size());
879 REQUIRE( data.size() == size_pre+10 );
880 REQUIRE( iter == data.end()-10 );
882 T data_exp = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
883 REQUIRE(data == data_exp);
887 REQUIRE( iter == data.end()-10 );
888 size_pre = data.size();
890 iter = data.erase(iter, iter+10);
892 REQUIRE( data.size() == size_pre-10 );
893 REQUIRE( iter == data.end() );
895 T data_exp = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
896 REQUIRE(data == data_exp);
900 size_pre = data.size();
902 REQUIRE( iter == data.begin() );
904 iter = data.erase(iter);
905 REQUIRE( data.size() == size_pre-1 );
906 REQUIRE( iter == data.begin() );
907 REQUIRE( *iter == elem );
909 T data_exp = { 2, 3, 4, 5, 6, 7, 8, 9 };
910 REQUIRE(data == data_exp);
914 size_pre = data.size();
915 REQUIRE( iter == data.begin() );
916 elem = data.end()[-1];
920 data.push_back(data2[0]);
921 data.push_back(data2[1]);
922 data.push_back(data2[2]);
924 REQUIRE( data.size() == size_pre+3 );
925 REQUIRE( iter == data.end() );
926 REQUIRE( iter[-3] == data2[0] );
927 REQUIRE( iter[-2] == data2[1] );
928 REQUIRE( iter[-1] == data2[2] );
931 T data_exp = { 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3 };
932 REQUIRE(data == data_exp);
936 size_pre = data.size();
937 REQUIRE( iter == data.end() );
939 iter = data.erase(iter, iter+3);
940 REQUIRE( data.size() == size_pre-3 );
941 REQUIRE( iter == data.end() );
943 T data_exp = { 2, 3, 4, 5, 6, 7, 8, 9 };
944 REQUIRE(data == data_exp);
948 size_pre = data.size();
949 REQUIRE( iter == data.end() );
951 typename T::value_type elem0 = data.begin()[0];
952 data.push_back( std::move(elem0));
955 typename T::value_type elem0 = data.begin()[1];
956 data.push_back( std::move(elem0));
959 typename T::value_type elem0 = data.begin()[2];
960 data.push_back( std::move(elem0));
963 REQUIRE( data.size() == size_pre+3 );
964 REQUIRE( iter == data.end() );
965 REQUIRE( iter[-3] == data.begin()[0] );
966 REQUIRE( iter[-2] == data.begin()[1] );
967 REQUIRE( iter[-1] == data.begin()[2] );
969 T data_exp = { 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4 };
970 REQUIRE(data == data_exp);
974 REQUIRE( iter == data.end() );
976 iter = data.erase(iter);
977 iter = data.erase(iter);
978 iter = data.erase(iter);
979 REQUIRE( iter == data.end() );
981 T data_exp = { 2, 3, 4, 5, 6, 7, 8, 9 };
982 REQUIRE(data == data_exp);
988 REQUIRE( iter == data.begin()+5 );
989 size_pre = data.size();
993 iter = data.insert(iter, data2[0]);
994 iter = data.insert(iter, data2[1]);
995 iter = data.insert(iter, data2[2]);
996 REQUIRE( data.size() == size_pre+3 );
997 REQUIRE( iter == data.begin()+5 );
999 REQUIRE( iter[5] == data2[2] );
1000 REQUIRE( iter[6] == data2[1] );
1001 REQUIRE( iter[7] == data2[0] );
1004 T data_exp = { 2, 3, 4, 5, 6, 3, 2, 1, 7, 8, 9 };
1005 REQUIRE(data == data_exp);
1010 REQUIRE( iter == data.begin()+5 );
1011 size_pre = data.size();
1015 iter = data.insert(iter, data2.cbegin(), data2.cbegin()+3);
1017 REQUIRE( data.size() == size_pre+3 );
1018 REQUIRE( iter == data.begin()+5 );
1020 T data_exp = { 2, 3, 4, 5, 6, 1, 2, 3, 3, 2, 1, 7, 8, 9 };
1021 REQUIRE(data == data_exp);
1025 REQUIRE( iter == data.begin()+5 );
1026 size_pre = data.size();
1027 iter = data.erase(iter, iter+6);
1028 REQUIRE( data.size() == size_pre-6 );
1029 REQUIRE( iter == data.begin()+5 );
1031 T data_exp = { 2, 3, 4, 5, 6, 7, 8, 9 };
1032 REQUIRE(data == data_exp);
1036 size_pre = data.size();
1037 REQUIRE( iter == data.begin()+5 );
1038 iter = data.emplace(iter,
static_cast<uint64_t
>(2) );
1039 iter = data.emplace(iter,
static_cast<uint64_t
>(3) );
1040 iter = data.emplace(iter,
static_cast<uint64_t
>(4) );
1042 REQUIRE( iter == data.begin()+5 );
1043 REQUIRE( iter[0] == 4 );
1044 REQUIRE( iter[1] == 3 );
1045 REQUIRE( iter[2] == 2 );
1047 T data_exp = { 2, 3, 4, 5, 6, 4, 3, 2, 7, 8, 9 };
1048 REQUIRE(data == data_exp);
1052 size_pre = data.size();
1053 REQUIRE( iter == data.begin()+5 );
1054 data.emplace_back(
static_cast<uint64_t
>(2) );
1055 data.emplace_back(
static_cast<uint64_t
>(3) );
1056 data.emplace_back(
static_cast<uint64_t
>(4) );
1058 REQUIRE( iter == data.end() );
1059 REQUIRE( iter[-1] == 4 );
1060 REQUIRE( iter[-2] == 3 );
1061 REQUIRE( iter[-3] == 2 );
1063 T data_exp = { 2, 3, 4, 5, 6, 4, 3, 2, 7, 8, 9, 2, 3, 4 };
1064 REQUIRE(data == data_exp);
1068 size_pre = data.size();
1069 REQUIRE( iter == data.end() );
1071 REQUIRE( iter == data.end()-10 );
1073 while( iter != data.end() ) {
1074 iter = data.erase(iter);
1076 REQUIRE( data.size() == size_pre - 10 );
1077 REQUIRE( iter == data.end() );
1080 T data_exp = { 2, 3, 4, 5 };
1081 REQUIRE(data == data_exp);
1092 REQUIRE(data == data2);
1093 REQUIRE(data == data3);
1113 typedef typename T::size_type size_type;
1114 typedef typename T::const_iterator citer_type;
1115 typedef typename T::iterator iter_type;
1117 printf(
"**** test_cow_iterator_properties: %s\n", type_id.c_str());
1121 const size_type size0 = 100;
1124 REQUIRE(0 == data.get_allocator().memory_usage);
1125 REQUIRE(data.size() == 0);
1126 REQUIRE(data.capacity() == 0);
1127 REQUIRE(data.empty() ==
true);
1130 REQUIRE(0 != data.get_allocator().memory_usage);
1131 REQUIRE(data.size() == size0);
1132 REQUIRE(data.size() <= data.capacity());
1137 iter_type iter1 = data.begin();
1138 citer_type citer2 = iter1.immutable();
1139 citer_type citer3 = iter1.immutable().to_end();
1141 REQUIRE( iter1.is_begin() );
1142 REQUIRE( citer2.is_begin() );
1143 REQUIRE( citer3.is_end() );
1145 REQUIRE( iter1.dist_begin() == 0);
1146 REQUIRE( iter1.dist_end() == size0);
1147 REQUIRE( citer2.dist_begin() == 0);
1148 REQUIRE( citer2.dist_end() == size0);
1149 REQUIRE( citer3.dist_begin() == size0);
1150 REQUIRE( citer3.dist_end() == 0);
1152 REQUIRE( ( iter1 == citer2 ) ==
true);
1153 REQUIRE( ( citer2 == iter1 ) ==
true);
1156 REQUIRE( ( citer2 != iter1 ) ==
true);
1157 REQUIRE( ( iter1 != citer2 ) ==
true);
1158 REQUIRE( ( citer2 > iter1 ) ==
true);
1159 REQUIRE( ( citer2 >= iter1 ) ==
true);
1160 REQUIRE( ( iter1 < citer2 ) ==
true);
1161 REQUIRE( ( iter1 <= citer2 ) ==
true);
1162 REQUIRE( ( citer2 - iter1 ) == 1);
1163 REQUIRE( ( iter1 - citer2 ) == -1);
1164 REQUIRE( citer2.dist_begin() == 1);
1165 REQUIRE( citer2.dist_end() == size0-1);
1169 REQUIRE( ( iter1 != citer2 ) ==
true);
1170 REQUIRE( ( citer2 != iter1 ) ==
true);
1171 REQUIRE( ( iter1 > citer2 ) ==
true);
1172 REQUIRE( ( iter1 >= citer2 ) ==
true);
1173 REQUIRE( ( citer2 < iter1 ) ==
true);
1174 REQUIRE( ( citer2 <= iter1 ) ==
true);
1175 REQUIRE( ( iter1 - citer2 ) == 1);
1176 REQUIRE( ( citer2 - iter1 ) == -1);
1177 REQUIRE( iter1.dist_begin() == 1);
1178 REQUIRE( iter1.dist_end() == size0-1);
1179 REQUIRE( citer2.dist_begin() == 0);
1180 REQUIRE( citer2.dist_end() == size0);
1182 REQUIRE( ( iter1.end() == citer3 ) ==
true);
1183 REQUIRE( ( iter1.to_end() == citer3 ) ==
true);
1184 REQUIRE( iter1.is_end() );
1185 REQUIRE( citer3.is_end() );
1186 REQUIRE( iter1.dist_begin() == size0);
1187 REQUIRE( iter1.dist_end() == 0);
1191 citer_type c_begin0 = data.cbegin();
1197 printf(
"testing mutable non-const behavior.\n");
1198 citer_type c_begin1;
1200 iter_type m_begin1 = data.begin();
1201 c_begin1 = m_begin1.immutable();
1203 REQUIRE(*c_begin1 == *m_begin1);
1204 REQUIRE( c_begin1 == m_begin1);
1205 REQUIRE( ( c_begin1 - m_begin1 ) == 0);
1206 printf(
" 1st store: %s == %s, dist %u\n",
1207 to_decstring(*c_begin1,
',', 2).c_str(),
to_decstring(*m_begin1,
',', 2).c_str(), (
unsigned int)(c_begin1 - m_begin1));
1208 citer_type c_begin2;
1210 iter_type m_begin2 = data.begin();
1211 c_begin2 = m_begin2.immutable();
1213 REQUIRE(*c_begin2 == *m_begin2);
1214 REQUIRE( c_begin2 == m_begin2);
1215 REQUIRE( ( c_begin2 - m_begin2 ) == 0);
1216 printf(
" 2nd store: %s == %s, dist %u\n",
1217 to_decstring(*c_begin2,
',', 2).c_str(),
to_decstring(*m_begin2,
',', 2).c_str(), (
unsigned int)(c_begin2 - m_begin2));
1219 REQUIRE(*c_begin2 == *c_begin1);
1220 REQUIRE( c_begin2 != c_begin1);
1221 REQUIRE( ( c_begin2 - c_begin1 ) != 0);
1222 printf(
"2nd -> 1st store: %s == %s, dist %u\n",
1223 to_decstring(*c_begin2,
',', 2).c_str(),
to_decstring(*c_begin1,
',', 2).c_str(), (
unsigned int)(c_begin2 - c_begin1));
1225 m_begin2.write_back();
1228 citer_type c_begin2b = data.cbegin();
1229 REQUIRE(*c_begin2 == *c_begin2b);
1230 REQUIRE( c_begin2 == c_begin2b);
1231 REQUIRE( ( c_begin2 - c_begin2b ) == 0);
1232 printf(
"2nd -> cow == cbegin: %s == %s, dist %u\n",
1233 to_decstring(*c_begin2,
',', 2).c_str(),
to_decstring(*c_begin2b,
',', 2).c_str(), (
unsigned int)(c_begin2 - c_begin2b));
1234 printf(
"2nd -> 1st : %s == %s, dist %u\n",
1235 to_decstring(*c_begin1,
',', 2).c_str(),
to_decstring(*c_begin2,
',', 2).c_str(), (
unsigned int)(c_begin1 - c_begin2));
1237 m_begin1.write_back();
1240 citer_type c_begin1b = data.cbegin();
1241 printf(
"1st -> cow == cbegin: %s == %s, dist %u\n",
1242 to_decstring(*c_begin1,
',', 2).c_str(),
to_decstring(*c_begin1b,
',', 2).c_str(), (
unsigned int)(c_begin1 - c_begin1b));
1243 REQUIRE(*c_begin1 == *c_begin1b);
1244 REQUIRE( c_begin1 == c_begin1b);
1245 REQUIRE( ( c_begin1 - c_begin1b ) == 0);