10bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant//===----------------------------------------------------------------------===//
20bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant//
30bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant//                     The LLVM Compiler Infrastructure
40bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant//
50bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
60bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant// Source Licenses. See LICENSE.TXT for details.
70bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant//
80bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant//===----------------------------------------------------------------------===//
90bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant
100bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant// <unordered_set>
110bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant
120bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant// Dereference non-dereferenceable iterator.
130bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant
145e57142c5902c3f73a6fdcb8cab55e88ffb43a56Howard Hinnant#if _LIBCPP_DEBUG >= 1
150bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant
160bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
170bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant
180bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant#include <unordered_set>
190bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant#include <cassert>
200bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant#include <iterator>
210bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant#include <exception>
220bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant#include <cstdlib>
230bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant
24061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h"
250bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant
260bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnantint main()
270bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant{
280bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    {
290bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    typedef int T;
300bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    typedef std::unordered_multiset<T> C;
310bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    C c(1);
320bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    C::iterator i = c.end();
330bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    T j = *i;
340bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    assert(false);
350bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    }
360bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant#if __cplusplus >= 201103L
370bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    {
380bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    typedef int T;
390bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    typedef std::unordered_multiset<T, min_allocator<T>> C;
400bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    C c(1);
410bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    C::iterator i = c.end();
420bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    T j = *i;
430bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    assert(false);
440bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant    }
450bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant#endif
460bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant}
470bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant
480bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant#else
490bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant
500bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnantint main()
510bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant{
520bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant}
530bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant
540bb0a7c9ea7dc2852c9bfb38584f4673ada25e2aHoward Hinnant#endif
55