insert_rvalue.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)//===----------------------------------------------------------------------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ��������������������The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// License. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <unordered_map> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// class Alloc = allocator<pair<const Key, T>>> 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// class unordered_map 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// template <class P, 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// class = typename enable_if<is_convertible<P, value_type>::value>::type> 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// pair<iterator, bool> insert(P&& x); 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include <unordered_map> 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <cassert> 22b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "../../../MoveOnly.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main() 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef std::unordered_map<double, int> C; 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) typedef std::pair<C::iterator, bool> R; 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef std::pair<double, short> P; 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) C c; 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) R r = c.insert(P(3.5, 3)); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(r.second); 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert(c.size() == 1); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(r.first->first == 3.5); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(r.first->second == 3); 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) r = c.insert(P(3.5, 4)); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(!r.second); 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(c.size() == 1); 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(r.first->first == 3.5); 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert(r.first->second == 3); 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) r = c.insert(P(4.5, 4)); 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(r.second); 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(c.size() == 2); 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert(r.first->first == 4.5); 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(r.first->second == 4); 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) r = c.insert(P(5.5, 4)); 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(r.second); 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(c.size() == 3); 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(r.first->first == 5.5); 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(r.first->second == 4); 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifdef _LIBCPP_MOVE 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef std::unordered_map<MoveOnly, MoveOnly> C; 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef std::pair<C::iterator, bool> R; 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef std::pair<MoveOnly, MoveOnly> P; 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) C c; 62a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) R r = c.insert(P(3, 3)); 63a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assert(r.second); 64a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assert(c.size() == 1); 65a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assert(r.first->first == 3); 66a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assert(r.first->second == 3); 67a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) r = c.insert(P(3, 4)); 695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu assert(!r.second); 70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assert(c.size() == 1); 71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assert(r.first->first == 3); 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert(r.first->second == 3); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) r = c.insert(P(4, 4)); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(r.second); 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(c.size() == 2); 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert(r.first->first == 4); 7890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(r.first->second == 4); 79b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) r = c.insert(P(5, 4)); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(r.second); 82b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) assert(c.size() == 3); 83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch assert(r.first->first == 5); 84b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) assert(r.first->second == 4); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 86b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#endif 87a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 88a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)