1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // UNSUPPORTED: c++98, c++03
11 // UNSUPPORTED: libcpp-no-exceptions
15 // Operations on "NULL" iterators
17 #define _LIBCPP_DEBUG 1
18 #define _LIBCPP_ASSERT(x, m) do { if (!x) throw 1; } while(0)
26 struct S { int val; };
34 typedef std::list<T> C;
36 C::const_iterator ci{};
39 try { ++i; } catch (int) { ++lib_asserts; }
40 try { i++; } catch (int) { ++lib_asserts; }
41 try { ++ci; } catch (int) { ++lib_asserts; }
42 try { ci++; } catch (int) { ++lib_asserts; }
43 assert(lib_asserts == 4);
46 try { --i; } catch (int) { ++lib_asserts; }
47 try { i--; } catch (int) { ++lib_asserts; }
48 try { --ci; } catch (int) { ++lib_asserts; }
49 try { ci--; } catch (int) { ++lib_asserts; }
50 assert(lib_asserts == 4);
53 try { *i; } catch (int) { ++lib_asserts; }
54 try { *ci; } catch (int) { ++lib_asserts; }
55 try { (void) i->val; } catch (int) { ++lib_asserts; }
56 try { (void) ci->val; } catch (int) { ++lib_asserts; }
57 assert(lib_asserts == 4);