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