1b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// The LLVM Compiler Infrastructure 4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// This file is dual licensed under the MIT and the University of Illinois Open 6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Source Licenses. See LICENSE.TXT for details. 7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// <map> 11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// class map 13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// template <class P> 15b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// pair<iterator, bool> insert(P&& p); 16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 17b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <map> 18b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <cassert> 19b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include "../../../MoveOnly.h" 21ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#include "../../../min_allocator.h" 22b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main() 24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES 26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::map<int, MoveOnly> M; 28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::pair<M::iterator, bool> R; 29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner M m; 30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner R r = m.insert(M::value_type(2, 2)); 31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.second); 32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first == m.begin()); 33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(m.size() == 1); 34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first->first == 2); 35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first->second == 2); 36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner r = m.insert(M::value_type(1, 1)); 38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.second); 39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first == m.begin()); 40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(m.size() == 2); 41b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first->first == 1); 42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first->second == 1); 43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner r = m.insert(M::value_type(3, 3)); 45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.second); 46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first == prev(m.end())); 47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(m.size() == 3); 48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first->first == 3); 49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first->second == 3); 50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner r = m.insert(M::value_type(3, 3)); 52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(!r.second); 53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first == prev(m.end())); 54b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(m.size() == 3); 55b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first->first == 3); 56b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(r.first->second == 3); 57b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 58ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#if __cplusplus >= 201103L 59ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 60ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef std::map<int, MoveOnly, std::less<int>, min_allocator<std::pair<const int, MoveOnly>>> M; 61ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef std::pair<M::iterator, bool> R; 62ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner M m; 63ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner R r = m.insert(M::value_type(2, 2)); 64ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.second); 65ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first == m.begin()); 66ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(m.size() == 1); 67ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first->first == 2); 68ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first->second == 2); 69ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 70ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner r = m.insert(M::value_type(1, 1)); 71ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.second); 72ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first == m.begin()); 73ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(m.size() == 2); 74ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first->first == 1); 75ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first->second == 1); 76ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 77ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner r = m.insert(M::value_type(3, 3)); 78ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.second); 79ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first == prev(m.end())); 80ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(m.size() == 3); 81ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first->first == 3); 82ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first->second == 3); 83ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 84ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner r = m.insert(M::value_type(3, 3)); 85ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(!r.second); 86ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first == prev(m.end())); 87ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(m.size() == 3); 88ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first->first == 3); 89ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(r.first->second == 3); 90ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner } 91ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#endif 92b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES 93b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 94