10d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant//===----------------------------------------------------------------------===//
20d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant//
30d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant//                     The LLVM Compiler Infrastructure
40d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant//
50d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
60d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
70d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant//
80d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant//===----------------------------------------------------------------------===//
90d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant
100d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant// <vector>
110d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant
120d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant// Subtract iterators from different containers.
130d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant
145e57142c5902c3f73a6fdcb8cab55e88ffb43a56Howard Hinnant#if _LIBCPP_DEBUG >= 1
150d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant
163fbd1dfb24f8c0e6e24bc429b8dec13b6e97d461Howard Hinnant#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
170d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant
180d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant#include <vector>
190d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant#include <cassert>
200d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant#include <iterator>
210d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant#include <exception>
220d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant#include <cstdlib>
230d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant
24061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h"
252c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant
260d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnantint main()
270d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant{
282c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant    {
290d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant    typedef int T;
300d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant    typedef std::vector<T> C;
310d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant    C c1;
320d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant    C c2;
330d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant    int i = c1.begin() - c2.begin();
340d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant    assert(false);
352c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant    }
362c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant#if __cplusplus >= 201103L
372c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant    {
382c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant    typedef int T;
392c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant    typedef std::vector<T, min_allocator<T>> C;
402c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant    C c1;
412c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant    C c2;
422c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant    int i = c1.begin() - c2.begin();
432c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant    assert(false);
442c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant    }
452c39cbe0207908bca2e1da40e16cbc443d2e7438Howard Hinnant#endif
460d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant}
470d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant
480d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant#else
490d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant
500d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnantint main()
510d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant{
520d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant}
530d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant
540d01eb54e708ff3dc1c11b1a53123a7fde7caa21Howard Hinnant#endif
55