1211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant//===----------------------------------------------------------------------===// 2211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// 3211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// The LLVM Compiler Infrastructure 4211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// 5211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// 8211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant//===----------------------------------------------------------------------===// 9211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant 10211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// <deque> 11211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant 12211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// Test nested types and default template args: 13211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant 14211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// template <class T, class Allocator = allocator<T> > 15211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// class deque; 16211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant 17211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant// iterator, const_iterator 18211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant 19211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant#include <deque> 20211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant#include <iterator> 21211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant#include <cassert> 22211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant 23061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h" 24fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant 25211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnantint main() 26211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant{ 27fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant { 28211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant typedef std::deque<int> C; 29211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant C c; 30211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant C::iterator i; 31211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant i = c.begin(); 32211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant C::const_iterator j; 33211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant j = c.cbegin(); 34211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant assert(i == j); 35fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant } 36fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant#if __cplusplus >= 201103L 37fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant { 38fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant typedef std::deque<int, min_allocator<int>> C; 39fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant C c; 40fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant C::iterator i; 41fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant i = c.begin(); 42fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant C::const_iterator j; 43fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant j = c.cbegin(); 44fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant assert(i == j); 45fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant } 46fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant#endif 475a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow#if _LIBCPP_STD_VER > 11 48051c848e8811c753df7c38c738172ba8f5672b0aMarshall Clow { // N3644 testing 495a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow std::deque<int>::iterator ii1{}, ii2{}; 505a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow std::deque<int>::iterator ii4 = ii1; 515a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow std::deque<int>::const_iterator cii{}; 525a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow assert ( ii1 == ii2 ); 535a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow assert ( ii1 == ii4 ); 545a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow 559863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert (!(ii1 != ii2 )); 565a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow 579863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert ( (ii1 == cii )); 589863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert ( (cii == ii1 )); 599863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert (!(ii1 != cii )); 609863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert (!(cii != ii1 )); 619863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert (!(ii1 < cii )); 629863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert (!(cii < ii1 )); 639863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert ( (ii1 <= cii )); 649863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert ( (cii <= ii1 )); 659863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert (!(ii1 > cii )); 669863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert (!(cii > ii1 )); 679863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert ( (ii1 >= cii )); 689863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert ( (cii >= ii1 )); 699863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert (cii - ii1 == 0); 709863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow assert (ii1 - cii == 0); 719863083ee04fe80e227976bc90dbc01806bdf3d9Marshall Clow 725a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow// std::deque<int> c; 735a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow// assert ( ii1 != c.cbegin()); 745a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow// assert ( cii != c.begin()); 755a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow// assert ( cii != c.cend()); 765a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow// assert ( ii1 != c.end()); 775a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow } 785a11f9458301329528fb69ce84c3b266f24e4185Marshall Clow#endif 79211f0ee1be4a4eaa0fab353904a8986af3f39e50Howard Hinnant} 80