Home | History | Annotate | Download | only in multiset
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // <set>
     11 
     12 // class multiset
     13 
     14 // size_type max_size() const;
     15 
     16 #include <cassert>
     17 #include <limits>
     18 #include <set>
     19 #include <type_traits>
     20 
     21 #include "test_allocator.h"
     22 #include "test_macros.h"
     23 
     24 int main()
     25 {
     26     {
     27       typedef limited_allocator<int, 10> A;
     28       typedef std::multiset<int, std::less<int>, A> C;
     29       C c;
     30       assert(c.max_size() <= 10);
     31       LIBCPP_ASSERT(c.max_size() == 10);
     32     }
     33     {
     34       typedef limited_allocator<int, (size_t)-1> A;
     35       typedef std::multiset<int, std::less<int>, A> C;
     36       const C::difference_type max_dist =
     37           std::numeric_limits<C::difference_type>::max();
     38       C c;
     39       assert(c.max_size() <= max_dist);
     40       LIBCPP_ASSERT(c.max_size() == max_dist);
     41     }
     42     {
     43       typedef std::multiset<char> C;
     44       const C::difference_type max_dist =
     45           std::numeric_limits<C::difference_type>::max();
     46       C c;
     47       assert(c.max_size() <= max_dist);
     48       assert(c.max_size() <= alloc_max_size(c.get_allocator()));
     49     }
     50 }
     51