[ 0:01] compiling /home/xrockai/src/divine/nightly/test/libcxx/algorithms/rotate.pass.cpp [ 0:01] In file included from /home/xrockai/src/divine/nightly/test/libcxx/algorithms/rotate.pass.cpp:18: [ 0:01] In file included from /dios/libcxx/include/algorithm:639: [ 0:01] In file included from /dios/libcxx/include/initializer_list:46: [ 0:01] In file included from /dios/libcxx/include/cstddef:44: [ 0:01] In file included from /dios/include/stddef.h:10: [ 0:01] In file included from /dios/include/_PDCLIB/int.h:16: [ 0:01] /dios/include/_PDCLIB/cdefs.h:69:10: warning: Unsupported _ _cplusplus (__cplusplus) (too new) (supported: ISO/IEC 14882:1997, ISO/IEC 14882:2011). [ 0:01] #warning Unsupported _ _cplusplus (__cplusplus) (too new) (supported: ISO/IEC 14882:1997, ISO/IEC 14882:2011). [ 0:01] ^ [ 0:01] 1 warning generated. [ 0:02] compiling /dios/lib/config/seqklee.bc [ 0:02] setting up pass: functionmeta, options = [ 0:04] setting up pass: fuse-ctors, options = [ 0:04] KLEE: output directory is "/var/obj/divine-nightly/semidbg/test/__test_work_dir.8/_klee_out" [ 0:10] KLEE: Using Z3 solver backend [ 0:10] WARNING: this target does not support the llvm.stacksave intrinsic. [ 0:10] warning: Linking two modules of different target triples: klee_div_zero_check.bc' is 'x86_64-unknown-linux-gnu' whereas 'klee.bc' is 'x86_64-unknown-none-elf' [ 0:10] [ 0:10] KLEE: WARNING: undefined reference to function: _Z10klee_abortv [ 0:18] KLEE: WARNING: undefined reference to function: __dios_tainted_init [ 0:18] KLEE: WARNING: undefined reference to function: klee_free [ 0:18] KLEE: WARNING: undefined reference to function: klee_malloc [ 0:18] KLEE: WARNING ONCE: Using zero size array fix for landingpad instruction filter [ 0:19] i:1 [ 0:19] KLEE: WARNING ONCE: Alignment of memory from call "klee_malloc" is not modelled. Using alignment of 8. [ 0:19] about to __boot:0 [ 0:19] about to run the scheduler:0 [ 0:19] KLEE: WARNING ONCE: calling external: __dios_tainted_init() at /dios/libc/sys/start.cpp:49 5 [ 0:19] KLEE: ERROR: /dios/libc/sys/start.cpp:87: failed external call: __dios_tainted_init [ 0:19] KLEE: NOTE: now ignoring this error at this location [ 0:19] KLEE: ERROR: EXITING ON ERROR: [ 0:19] Error: failed external call: __dios_tainted_init [ 0:19] File: /dios/libc/sys/start.cpp [ 0:19] Line: 87 [ 0:19] assembly.ll line: 143783 [ 0:19] Stack: [ 0:19] #000143783 in __dios_start (l=2, argc=1, argv=94367437869576, envp=94367437946888) at /dios/libc/sys/start.cpp:87 [ 0:19] #100091785 in _ZN6__dios10sched_nullINS_5ClockINS_10NondetKleeINS_4BaseEEEEEE13run_schedulerINS_7ContextEEEvv () at /dios/sys/sched_null.hpp:163 [ 0:19] #200152363 in klee_boot (argc=2, argv=94367396556160) at /dios/arch/klee/boot.c:41 [ 0:19] [ 0:19] [ 0:19] 1 /* TAGS: c++ fin */ [ 0:19] 2 /* CC_OPTS: -std=c++2a */ [ 0:19] 3 /* VERIFY_OPTS: -o nofail:malloc */ [ 0:19] 4 //===----------------------------------------------------------------------===// [ 0:19] 5 // [ 0:19] 6 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. [ 0:19] 7 // See https://llvm.org/LICENSE.txt for license information. [ 0:19] 8 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception [ 0:19] 9 // [ 0:19] 10 //===----------------------------------------------------------------------===// [ 0:19] 11 [ 0:19] 12 // [ 0:19] 13 [ 0:19] 14 // template [ 0:19] 15 // Iter [ 0:19] 16 // rotate(Iter first, Iter middle, Iter last); [ 0:19] 17 [ 0:19] 18 #include [ 0:19] 19 #include [ 0:19] 20 #include [ 0:19] 21 [ 0:19] 22 #include "test_macros.h" [ 0:19] 23 #include "test_iterators.h" [ 0:19] 24 [ 0:19] 25 template [ 0:19] 26 void [ 0:19] 27 test() [ 0:19] 28 { [ 0:19] 29 int ia[] = {0}; [ 0:19] 30 const int sa = static_cast(sizeof(ia)/sizeof(ia[0])); [ 0:19] 31 Iter r = std::rotate(Iter(ia), Iter(ia), Iter(ia)); [ 0:19] 32 assert(base(r) == ia); [ 0:19] 33 assert(ia[0] == 0); [ 0:19] 34 r = std::rotate(Iter(ia), Iter(ia), Iter(ia+sa)); [ 0:19] 35 assert(base(r) == ia+sa); [ 0:19] 36 assert(ia[0] == 0); [ 0:19] 37 r = std::rotate(Iter(ia), Iter(ia+sa), Iter(ia+sa)); [ 0:19] 38 assert(base(r) == ia); [ 0:19] 39 assert(ia[0] == 0); [ 0:19] 40 [ 0:19] 41 int ib[] = {0, 1}; [ 0:19] 42 const int sb = static_cast(sizeof(ib)/sizeof(ib[0])); [ 0:19] 43 r = std::rotate(Iter(ib), Iter(ib), Iter(ib+sb)); [ 0:19] 44 assert(base(r) == ib+sb); [ 0:19] 45 assert(ib[0] == 0); [ 0:19] 46 assert(ib[1] == 1); [ 0:19] 47 r = std::rotate(Iter(ib), Iter(ib+1), Iter(ib+sb)); [ 0:19] 48 assert(base(r) == ib+1); [ 0:19] 49 assert(ib[0] == 1); [ 0:19] 50 assert(ib[1] == 0); [ 0:19] 51 r = std::rotate(Iter(ib), Iter(ib+sb), Iter(ib+sb)); [ 0:19] 52 assert(base(r) == ib); [ 0:19] 53 assert(ib[0] == 1); [ 0:19] 54 assert(ib[1] == 0); [ 0:19] 55 [ 0:19] 56 int ic[] = {0, 1, 2}; [ 0:19] 57 const int sc = static_cast(sizeof(ic)/sizeof(ic[0])); [ 0:19] 58 r = std::rotate(Iter(ic), Iter(ic), Iter(ic+sc)); [ 0:19] 59 assert(base(r) == ic+sc); [ 0:19] 60 assert(ic[0] == 0); [ 0:19] 61 assert(ic[1] == 1); [ 0:19] 62 assert(ic[2] == 2); [ 0:19] 63 r = std::rotate(Iter(ic), Iter(ic+1), Iter(ic+sc)); [ 0:19] 64 assert(base(r) == ic+2); [ 0:19] 65 assert(ic[0] == 1); [ 0:19] 66 assert(ic[1] == 2); [ 0:19] 67 assert(ic[2] == 0); [ 0:19] 68 r = std::rotate(Iter(ic), Iter(ic+2), Iter(ic+sc)); [ 0:19] 69 assert(base(r) == ic+1); [ 0:19] 70 assert(ic[0] == 0); [ 0:19] 71 assert(ic[1] == 1); [ 0:19] 72 assert(ic[2] == 2); [ 0:19] 73 r = std::rotate(Iter(ic), Iter(ic+sc), Iter(ic+sc)); [ 0:19] 74 assert(base(r) == ic); [ 0:19] 75 assert(ic[0] == 0); [ 0:19] 76 assert(ic[1] == 1); [ 0:19] 77 assert(ic[2] == 2); [ 0:19] 78 [ 0:19] 79 int id[] = {0, 1, 2, 3}; [ 0:19] 80 const int sd = static_cast(sizeof(id)/sizeof(id[0])); [ 0:19] 81 r = std::rotate(Iter(id), Iter(id), Iter(id+sd)); [ 0:19] 82 assert(base(r) == id+sd); [ 0:19] 83 assert(id[0] == 0); [ 0:19] 84 assert(id[1] == 1); [ 0:19] 85 assert(id[2] == 2); [ 0:19] 86 assert(id[3] == 3); [ 0:19] 87 r = std::rotate(Iter(id), Iter(id+1), Iter(id+sd)); [ 0:19] 88 assert(base(r) == id+3); [ 0:19] 89 assert(id[0] == 1); [ 0:19] 90 assert(id[1] == 2); [ 0:19] 91 assert(id[2] == 3); [ 0:19] 92 assert(id[3] == 0); [ 0:19] 93 r = std::rotate(Iter(id), Iter(id+2), Iter(id+sd)); [ 0:19] 94 assert(base(r) == id+2); [ 0:19] 95 assert(id[0] == 3); [ 0:19] 96 assert(id[1] == 0); [ 0:19] 97 assert(id[2] == 1); [ 0:19] 98 assert(id[3] == 2); [ 0:19] 99 r = std::rotate(Iter(id), Iter(id+3), Iter(id+sd)); [ 0:19] 100 assert(base(r) == id+1); [ 0:19] 101 assert(id[0] == 2); [ 0:19] 102 assert(id[1] == 3); [ 0:19] 103 assert(id[2] == 0); [ 0:19] 104 assert(id[3] == 1); [ 0:19] 105 r = std::rotate(Iter(id), Iter(id+sd), Iter(id+sd)); [ 0:19] 106 assert(base(r) == id); [ 0:19] 107 assert(id[0] == 2); [ 0:19] 108 assert(id[1] == 3); [ 0:19] 109 assert(id[2] == 0); [ 0:19] 110 assert(id[3] == 1); [ 0:19] 111 [ 0:19] 112 int ie[] = {0, 1, 2, 3, 4}; [ 0:19] 113 const int se = static_cast(sizeof(ie)/sizeof(ie[0])); [ 0:19] 114 r = std::rotate(Iter(ie), Iter(ie), Iter(ie+se)); [ 0:19] 115 assert(base(r) == ie+se); [ 0:19] 116 assert(ie[0] == 0); [ 0:19] 117 assert(ie[1] == 1); [ 0:19] 118 assert(ie[2] == 2); [ 0:19] 119 assert(ie[3] == 3); [ 0:19] 120 assert(ie[4] == 4); [ 0:19] 121 r = std::rotate(Iter(ie), Iter(ie+1), Iter(ie+se)); [ 0:19] 122 assert(base(r) == ie+4); [ 0:19] 123 assert(ie[0] == 1); [ 0:19] 124 assert(ie[1] == 2); [ 0:19] 125 assert(ie[2] == 3); [ 0:19] 126 assert(ie[3] == 4); [ 0:19] 127 assert(ie[4] == 0); [ 0:19] 128 r = std::rotate(Iter(ie), Iter(ie+2), Iter(ie+se)); [ 0:19] 129 assert(base(r) == ie+3); [ 0:19] 130 assert(ie[0] == 3); [ 0:19] 131 assert(ie[1] == 4); [ 0:19] 132 assert(ie[2] == 0); [ 0:19] 133 assert(ie[3] == 1); [ 0:19] 134 assert(ie[4] == 2); [ 0:19] 135 r = std::rotate(Iter(ie), Iter(ie+3), Iter(ie+se)); [ 0:19] 136 assert(base(r) == ie+2); [ 0:19] 137 assert(ie[0] == 1); [ 0:19] 138 assert(ie[1] == 2); [ 0:19] 139 assert(ie[2] == 3); [ 0:19] 140 assert(ie[3] == 4); [ 0:19] 141 assert(ie[4] == 0); [ 0:19] 142 r = std::rotate(Iter(ie), Iter(ie+4), Iter(ie+se)); [ 0:19] 143 assert(base(r) == ie+1); [ 0:19] 144 assert(ie[0] == 0); [ 0:19] 145 assert(ie[1] == 1); [ 0:19] 146 assert(ie[2] == 2); [ 0:19] 147 assert(ie[3] == 3); [ 0:19] 148 assert(ie[4] == 4); [ 0:19] 149 r = std::rotate(Iter(ie), Iter(ie+se), Iter(ie+se)); [ 0:19] 150 assert(base(r) == ie); [ 0:19] 151 assert(ie[0] == 0); [ 0:19] 152 assert(ie[1] == 1); [ 0:19] 153 assert(ie[2] == 2); [ 0:19] 154 assert(ie[3] == 3); [ 0:19] 155 assert(ie[4] == 4); [ 0:19] 156 [ 0:19] 157 int ig[] = {0, 1, 2, 3, 4, 5}; [ 0:19] 158 const int sg = static_cast(sizeof(ig)/sizeof(ig[0])); [ 0:19] 159 r = std::rotate(Iter(ig), Iter(ig), Iter(ig+sg)); [ 0:19] 160 assert(base(r) == ig+sg); [ 0:19] 161 assert(ig[0] == 0); [ 0:19] 162 assert(ig[1] == 1); [ 0:19] 163 assert(ig[2] == 2); [ 0:19] 164 assert(ig[3] == 3); [ 0:19] 165 assert(ig[4] == 4); [ 0:19] 166 assert(ig[5] == 5); [ 0:19] 167 r = std::rotate(Iter(ig), Iter(ig+1), Iter(ig+sg)); [ 0:19] 168 assert(base(r) == ig+5); [ 0:19] 169 assert(ig[0] == 1); [ 0:19] 170 assert(ig[1] == 2); [ 0:19] 171 assert(ig[2] == 3); [ 0:19] 172 assert(ig[3] == 4); [ 0:19] 173 assert(ig[4] == 5); [ 0:19] 174 assert(ig[5] == 0); [ 0:19] 175 r = std::rotate(Iter(ig), Iter(ig+2), Iter(ig+sg)); [ 0:19] 176 assert(base(r) == ig+4); [ 0:19] 177 assert(ig[0] == 3); [ 0:19] 178 assert(ig[1] == 4); [ 0:19] 179 assert(ig[2] == 5); [ 0:19] 180 assert(ig[3] == 0); [ 0:19] 181 assert(ig[4] == 1); [ 0:19] 182 assert(ig[5] == 2); [ 0:19] 183 r = std::rotate(Iter(ig), Iter(ig+3), Iter(ig+sg)); [ 0:19] 184 assert(base(r) == ig+3); [ 0:19] 185 assert(ig[0] == 0); [ 0:19] 186 assert(ig[1] == 1); [ 0:19] 187 assert(ig[2] == 2); [ 0:19] 188 assert(ig[3] == 3); [ 0:19] 189 assert(ig[4] == 4); [ 0:19] 190 assert(ig[5] == 5); [ 0:19] 191 r = std::rotate(Iter(ig), Iter(ig+4), Iter(ig+sg)); [ 0:19] 192 assert(base(r) == ig+2); [ 0:19] 193 assert(ig[0] == 4); [ 0:19] 194 assert(ig[1] == 5); [ 0:19] 195 assert(ig[2] == 0); [ 0:19] 196 assert(ig[3] == 1); [ 0:19] 197 assert(ig[4] == 2); [ 0:19] 198 assert(ig[5] == 3); [ 0:19] 199 r = std::rotate(Iter(ig), Iter(ig+5), Iter(ig+sg)); [ 0:19] 200 assert(base(r) == ig+1); [ 0:19] 201 assert(ig[0] == 3); [ 0:19] 202 assert(ig[1] == 4); [ 0:19] 203 assert(ig[2] == 5); [ 0:19] 204 assert(ig[3] == 0); [ 0:19] 205 assert(ig[4] == 1); [ 0:19] 206 assert(ig[5] == 2); [ 0:19] 207 r = std::rotate(Iter(ig), Iter(ig+sg), Iter(ig+sg)); [ 0:19] 208 assert(base(r) == ig); [ 0:19] 209 assert(ig[0] == 3); [ 0:19] 210 assert(ig[1] == 4); [ 0:19] 211 assert(ig[2] == 5); [ 0:19] 212 assert(ig[3] == 0); [ 0:19] 213 assert(ig[4] == 1); [ 0:19] 214 assert(ig[5] == 2); [ 0:19] 215 } [ 0:19] 216 [ 0:19] 217 #if TEST_STD_VER >= 11 [ 0:19] 218 [ 0:19] 219 template [ 0:19] 220 void [ 0:19] 221 test1() [ 0:19] 222 { [ 0:19] 223 std::unique_ptr ia[1]; [ 0:19] 224 const int sa = static_cast(sizeof(ia)/sizeof(ia[0])); [ 0:19] 225 for (int i = 0; i < sa; ++i) [ 0:19] 226 ia[i].reset(new int(i)); [ 0:19] 227 Iter r = std::rotate(Iter(ia), Iter(ia), Iter(ia)); [ 0:19] 228 assert(base(r) == ia); [ 0:19] 229 assert(*ia[0] == 0); [ 0:19] 230 r = std::rotate(Iter(ia), Iter(ia), Iter(ia+sa)); [ 0:19] 231 assert(base(r) == ia+sa); [ 0:19] 232 assert(*ia[0] == 0); [ 0:19] 233 r = std::rotate(Iter(ia), Iter(ia+sa), Iter(ia+sa)); [ 0:19] 234 assert(base(r) == ia); [ 0:19] 235 assert(*ia[0] == 0); [ 0:19] 236 [ 0:19] 237 std::unique_ptr ib[2]; [ 0:19] 238 const int sb = static_cast(sizeof(ib)/sizeof(ib[0])); [ 0:19] 239 for (int i = 0; i < sb; ++i) [ 0:19] 240 ib[i].reset(new int(i)); [ 0:19] 241 r = std::rotate(Iter(ib), Iter(ib), Iter(ib+sb)); [ 0:19] 242 assert(base(r) == ib+sb); [ 0:19] 243 assert(*ib[0] == 0); [ 0:19] 244 assert(*ib[1] == 1); [ 0:19] 245 r = std::rotate(Iter(ib), Iter(ib+1), Iter(ib+sb)); [ 0:19] 246 assert(base(r) == ib+1); [ 0:19] 247 assert(*ib[0] == 1); [ 0:19] 248 assert(*ib[1] == 0); [ 0:19] 249 r = std::rotate(Iter(ib), Iter(ib+sb), Iter(ib+sb)); [ 0:19] 250 assert(base(r) == ib); [ 0:19] 251 assert(*ib[0] == 1); [ 0:19] 252 assert(*ib[1] == 0); [ 0:19] 253 [ 0:19] 254 std::unique_ptr ic[3]; [ 0:19] 255 const int sc = static_cast(sizeof(ic)/sizeof(ic[0])); [ 0:19] 256 for (int i = 0; i < sc; ++i) [ 0:19] 257 ic[i].reset(new int(i)); [ 0:19] 258 r = std::rotate(Iter(ic), Iter(ic), Iter(ic+sc)); [ 0:19] 259 assert(base(r) == ic+sc); [ 0:19] 260 assert(*ic[0] == 0); [ 0:19] 261 assert(*ic[1] == 1); [ 0:19] 262 assert(*ic[2] == 2); [ 0:19] 263 r = std::rotate(Iter(ic), Iter(ic+1), Iter(ic+sc)); [ 0:19] 264 assert(base(r) == ic+2); [ 0:19] 265 assert(*ic[0] == 1); [ 0:19] 266 assert(*ic[1] == 2); [ 0:19] 267 assert(*ic[2] == 0); [ 0:19] 268 r = std::rotate(Iter(ic), Iter(ic+2), Iter(ic+sc)); [ 0:19] 269 assert(base(r) == ic+1); [ 0:19] 270 assert(*ic[0] == 0); [ 0:19] 271 assert(*ic[1] == 1); [ 0:19] 272 assert(*ic[2] == 2); [ 0:19] 273 r = std::rotate(Iter(ic), Iter(ic+sc), Iter(ic+sc)); [ 0:19] 274 assert(base(r) == ic); [ 0:19] 275 assert(*ic[0] == 0); [ 0:19] 276 assert(*ic[1] == 1); [ 0:19] 277 assert(*ic[2] == 2); [ 0:19] 278 [ 0:19] 279 std::unique_ptr id[4]; [ 0:19] 280 const int sd = static_cast(sizeof(id)/sizeof(id[0])); [ 0:19] 281 for (int i = 0; i < sd; ++i) [ 0:19] 282 id[i].reset(new int(i)); [ 0:19] 283 r = std::rotate(Iter(id), Iter(id), Iter(id+sd)); [ 0:19] 284 assert(base(r) == id+sd); [ 0:19] 285 assert(*id[0] == 0); [ 0:19] 286 assert(*id[1] == 1); [ 0:19] 287 assert(*id[2] == 2); [ 0:19] 288 assert(*id[3] == 3); [ 0:19] 289 r = std::rotate(Iter(id), Iter(id+1), Iter(id+sd)); [ 0:19] 290 assert(base(r) == id+3); [ 0:19] 291 assert(*id[0] == 1); [ 0:19] 292 assert(*id[1] == 2); [ 0:19] 293 assert(*id[2] == 3); [ 0:19] 294 assert(*id[3] == 0); [ 0:19] 295 r = std::rotate(Iter(id), Iter(id+2), Iter(id+sd)); [ 0:19] 296 assert(base(r) == id+2); [ 0:19] 297 assert(*id[0] == 3); [ 0:19] 298 assert(*id[1] == 0); [ 0:19] 299 assert(*id[2] == 1); [ 0:19] 300 assert(*id[3] == 2); [ 0:19] 301 r = std::rotate(Iter(id), Iter(id+3), Iter(id+sd)); [ 0:19] 302 assert(base(r) == id+1); [ 0:19] 303 assert(*id[0] == 2); [ 0:19] 304 assert(*id[1] == 3); [ 0:19] 305 assert(*id[2] == 0); [ 0:19] 306 assert(*id[3] == 1); [ 0:19] 307 r = std::rotate(Iter(id), Iter(id+sd), Iter(id+sd)); [ 0:19] 308 assert(base(r) == id); [ 0:19] 309 assert(*id[0] == 2); [ 0:19] 310 assert(*id[1] == 3); [ 0:19] 311 assert(*id[2] == 0); [ 0:19] 312 assert(*id[3] == 1); [ 0:19] 313 [ 0:19] 314 std::unique_ptr ie[5]; [ 0:19] 315 const int se = static_cast(sizeof(ie)/sizeof(ie[0])); [ 0:19] 316 for (int i = 0; i < se; ++i) [ 0:19] 317 ie[i].reset(new int(i)); [ 0:19] 318 r = std::rotate(Iter(ie), Iter(ie), Iter(ie+se)); [ 0:19] 319 assert(base(r) == ie+se); [ 0:19] 320 assert(*ie[0] == 0); [ 0:19] 321 assert(*ie[1] == 1); [ 0:19] 322 assert(*ie[2] == 2); [ 0:19] 323 assert(*ie[3] == 3); [ 0:19] 324 assert(*ie[4] == 4); [ 0:19] 325 r = std::rotate(Iter(ie), Iter(ie+1), Iter(ie+se)); [ 0:19] 326 assert(base(r) == ie+4); [ 0:19] 327 assert(*ie[0] == 1); [ 0:19] 328 assert(*ie[1] == 2); [ 0:19] 329 assert(*ie[2] == 3); [ 0:19] 330 assert(*ie[3] == 4); [ 0:19] 331 assert(*ie[4] == 0); [ 0:19] 332 r = std::rotate(Iter(ie), Iter(ie+2), Iter(ie+se)); [ 0:19] 333 assert(base(r) == ie+3); [ 0:19] 334 assert(*ie[0] == 3); [ 0:19] 335 assert(*ie[1] == 4); [ 0:19] 336 assert(*ie[2] == 0); [ 0:19] 337 assert(*ie[3] == 1); [ 0:19] 338 assert(*ie[4] == 2); [ 0:19] 339 r = std::rotate(Iter(ie), Iter(ie+3), Iter(ie+se)); [ 0:19] 340 assert(base(r) == ie+2); [ 0:19] 341 assert(*ie[0] == 1); [ 0:19] 342 assert(*ie[1] == 2); [ 0:19] 343 assert(*ie[2] == 3); [ 0:19] 344 assert(*ie[3] == 4); [ 0:19] 345 assert(*ie[4] == 0); [ 0:19] 346 r = std::rotate(Iter(ie), Iter(ie+4), Iter(ie+se)); [ 0:19] 347 assert(base(r) == ie+1); [ 0:19] 348 assert(*ie[0] == 0); [ 0:19] 349 assert(*ie[1] == 1); [ 0:19] 350 assert(*ie[2] == 2); [ 0:19] 351 assert(*ie[3] == 3); [ 0:19] 352 assert(*ie[4] == 4); [ 0:19] 353 r = std::rotate(Iter(ie), Iter(ie+se), Iter(ie+se)); [ 0:19] 354 assert(base(r) == ie); [ 0:19] 355 assert(*ie[0] == 0); [ 0:19] 356 assert(*ie[1] == 1); [ 0:19] 357 assert(*ie[2] == 2); [ 0:19] 358 assert(*ie[3] == 3); [ 0:19] 359 assert(*ie[4] == 4); [ 0:19] 360 [ 0:19] 361 std::unique_ptr ig[6]; [ 0:19] 362 const int sg = static_cast(sizeof(ig)/sizeof(ig[0])); [ 0:19] 363 for (int i = 0; i < sg; ++i) [ 0:19] 364 ig[i].reset(new int(i)); [ 0:19] 365 r = std::rotate(Iter(ig), Iter(ig), Iter(ig+sg)); [ 0:19] 366 assert(base(r) == ig+sg); [ 0:19] 367 assert(*ig[0] == 0); [ 0:19] 368 assert(*ig[1] == 1); [ 0:19] 369 assert(*ig[2] == 2); [ 0:19] 370 assert(*ig[3] == 3); [ 0:19] 371 assert(*ig[4] == 4); [ 0:19] 372 assert(*ig[5] == 5); [ 0:19] 373 r = std::rotate(Iter(ig), Iter(ig+1), Iter(ig+sg)); [ 0:19] 374 assert(base(r) == ig+5); [ 0:19] 375 assert(*ig[0] == 1); [ 0:19] 376 assert(*ig[1] == 2); [ 0:19] 377 assert(*ig[2] == 3); [ 0:19] 378 assert(*ig[3] == 4); [ 0:19] 379 assert(*ig[4] == 5); [ 0:19] 380 assert(*ig[5] == 0); [ 0:19] 381 r = std::rotate(Iter(ig), Iter(ig+2), Iter(ig+sg)); [ 0:19] 382 assert(base(r) == ig+4); [ 0:19] 383 assert(*ig[0] == 3); [ 0:19] 384 assert(*ig[1] == 4); [ 0:19] 385 assert(*ig[2] == 5); [ 0:19] 386 assert(*ig[3] == 0); [ 0:19] 387 assert(*ig[4] == 1); [ 0:19] 388 assert(*ig[5] == 2); [ 0:19] 389 r = std::rotate(Iter(ig), Iter(ig+3), Iter(ig+sg)); [ 0:19] 390 assert(base(r) == ig+3); [ 0:19] 391 assert(*ig[0] == 0); [ 0:19] 392 assert(*ig[1] == 1); [ 0:19] 393 assert(*ig[2] == 2); [ 0:19] 394 assert(*ig[3] == 3); [ 0:19] 395 assert(*ig[4] == 4); [ 0:19] 396 assert(*ig[5] == 5); [ 0:19] 397 r = std::rotate(Iter(ig), Iter(ig+4), Iter(ig+sg)); [ 0:19] 398 assert(base(r) == ig+2); [ 0:19] 399 assert(*ig[0] == 4); [ 0:19] 400 assert(*ig[1] == 5); [ 0:19] 401 assert(*ig[2] == 0); [ 0:19] 402 assert(*ig[3] == 1); [ 0:19] 403 assert(*ig[4] == 2); [ 0:19] 404 assert(*ig[5] == 3); [ 0:19] 405 r = std::rotate(Iter(ig), Iter(ig+5), Iter(ig+sg)); [ 0:19] 406 assert(base(r) == ig+1); [ 0:19] 407 assert(*ig[0] == 3); [ 0:19] 408 assert(*ig[1] == 4); [ 0:19] 409 assert(*ig[2] == 5); [ 0:19] 410 assert(*ig[3] == 0); [ 0:19] 411 assert(*ig[4] == 1); [ 0:19] 412 assert(*ig[5] == 2); [ 0:19] 413 r = std::rotate(Iter(ig), Iter(ig+sg), Iter(ig+sg)); [ 0:19] 414 assert(base(r) == ig); [ 0:19] 415 assert(*ig[0] == 3); [ 0:19] 416 assert(*ig[1] == 4); [ 0:19] 417 assert(*ig[2] == 5); [ 0:19] 418 assert(*ig[3] == 0); [ 0:19] 419 assert(*ig[4] == 1); [ 0:19] 420 assert(*ig[5] == 2); [ 0:19] 421 } [ 0:19] 422 [ 0:19] 423 #endif // TEST_STD_VER >= 11 [ 0:19] 424 [ 0:19] 425 int main(int, char**) [ 0:19] 426 { [ 0:19] 427 test >(); [ 0:19] 428 test >(); [ 0:19] 429 test >(); [ 0:19] 430 test(); [ 0:19] 431 [ 0:19] 432 #if TEST_STD_VER >= 11 [ 0:19] 433 [ 0:19] 434 test1*> >(); [ 0:19] 435 test1*> >(); [ 0:19] 436 test1*> >(); [ 0:19] 437 test1*>(); [ 0:19] 438 [ 0:19] 439 #endif [ 0:19] 440 [ 0:19] 441 return 0; [ 0:19] 442 } [ 0:19] # no errors were expected but one was found anyway