allocator.pass.cpp revision 7a6b7cedcb3359ad7d77e355b02ab982d9d2b25b
15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//===----------------------------------------------------------------------===// 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// The LLVM Compiler Infrastructure 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Source Licenses. See LICENSE.TXT for details. 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//===----------------------------------------------------------------------===// 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// <unordered_map> 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// class Alloc = allocator<pair<const Key, T>>> 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// class unordered_map 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// explicit unordered_map(const allocator_type& __a); 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <unordered_map> 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <cassert> 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "../../../NotConstructible.h" 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "../../../test_compare.h" 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "../../../test_hash.h" 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "../../../test_allocator.h" 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "../../../min_allocator.h" 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)int main() 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) typedef std::unordered_map<NotConstructible, NotConstructible, 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) test_hash<std::hash<NotConstructible> >, 3253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) test_compare<std::equal_to<NotConstructible> >, 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) test_allocator<std::pair<const NotConstructible, 34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch NotConstructible> > 35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch > C; 367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci C c(test_allocator<std::pair<const NotConstructible, NotConstructible> >(10)); 3753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.bucket_count() == 0); 3853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.hash_function() == test_hash<std::hash<NotConstructible> >()); 3953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.key_eq() == test_compare<std::equal_to<NotConstructible> >()); 40591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch assert(c.get_allocator() == 4153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) (test_allocator<std::pair<const NotConstructible, NotConstructible> >(10))); 4253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.size() == 0); 4353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.empty()); 4453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(std::distance(c.begin(), c.end()) == 0); 4553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.load_factor() == 0); 469bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) assert(c.max_load_factor() == 1); 4776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) } 4853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#if __cplusplus >= 201103L 49e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) { 50e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) typedef std::unordered_map<NotConstructible, NotConstructible, 51e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch test_hash<std::hash<NotConstructible> >, 5276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) test_compare<std::equal_to<NotConstructible> >, 5376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) min_allocator<std::pair<const NotConstructible, 5453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) NotConstructible> > 5553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) > C; 56d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) C c(min_allocator<std::pair<const NotConstructible, NotConstructible> >{}); 5753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.bucket_count() == 0); 5853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.hash_function() == test_hash<std::hash<NotConstructible> >()); 5909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) assert(c.key_eq() == test_compare<std::equal_to<NotConstructible> >()); 6053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.get_allocator() == 61d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) (min_allocator<std::pair<const NotConstructible, NotConstructible> >())); 626f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch assert(c.size() == 0); 6353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.empty()); 6453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(std::distance(c.begin(), c.end()) == 0); 6553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.load_factor() == 0); 6653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(c.max_load_factor() == 1); 67323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) } 6853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#endif 6953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 7053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)