emplace_hint.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// This file is distributed under the University of Illinois Open Source 6bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// License. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <set> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// class multiset 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// template <class... Args> 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// iterator emplace_hint(const_iterator position, Args&&... args); 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <set> 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert> 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "../../Emplaceable.h" 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "../../DefaultOnly.h" 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifdef _LIBCPP_MOVE 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant typedef std::multiset<DefaultOnly> M; 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant typedef M::iterator R; 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant M m; 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(DefaultOnly::count == 0); 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant R r = m.emplace_hint(m.cend()); 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(r == m.begin()); 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(m.size() == 1); 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*m.begin() == DefaultOnly()); 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(DefaultOnly::count == 1); 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant r = m.emplace_hint(m.cbegin()); 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(r == m.begin()); 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(m.size() == 2); 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*m.begin() == DefaultOnly()); 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(DefaultOnly::count == 2); 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(DefaultOnly::count == 0); 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant typedef std::multiset<Emplaceable> M; 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant typedef M::iterator R; 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant M m; 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant R r = m.emplace_hint(m.cend()); 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(r == m.begin()); 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(m.size() == 1); 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*m.begin() == Emplaceable()); 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant r = m.emplace_hint(m.cend(), 2, 3.5); 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(r == next(m.begin())); 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(m.size() == 2); 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*r == Emplaceable(2, 3.5)); 56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant r = m.emplace_hint(m.cbegin(), 2, 3.5); 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(r == next(m.begin())); 58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(m.size() == 3); 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*r == Emplaceable(2, 3.5)); 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant typedef std::multiset<int> M; 63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant typedef M::iterator R; 64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant M m; 65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant R r = m.emplace_hint(m.cend(), M::value_type(2)); 66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(r == m.begin()); 67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(m.size() == 1); 68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*r == 2); 69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 72