Home | History | Annotate | Download | only in forwardlist
      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 // <forward_list>
     11 
     12 // size_type max_size() const;
     13 
     14 #include <cassert>
     15 #include <forward_list>
     16 #include <limits>
     17 #include <type_traits>
     18 
     19 #include "test_allocator.h"
     20 #include "test_macros.h"
     21 
     22 int main()
     23 {
     24     {
     25       typedef limited_allocator<int, 10> A;
     26       typedef std::forward_list<int, A> C;
     27       C c;
     28       assert(c.max_size() <= 10);
     29       LIBCPP_ASSERT(c.max_size() == 10);
     30     }
     31     {
     32       typedef limited_allocator<int, (size_t)-1> A;
     33       typedef std::forward_list<int, A> C;
     34       const C::difference_type max_dist =
     35           std::numeric_limits<C::difference_type>::max();
     36       C c;
     37       assert(c.max_size() <= max_dist);
     38       LIBCPP_ASSERT(c.max_size() == max_dist);
     39     }
     40     {
     41       typedef std::forward_list<char> C;
     42       const C::difference_type max_dist =
     43           std::numeric_limits<C::difference_type>::max();
     44       C c;
     45       assert(c.max_size() <= max_dist);
     46       assert(c.max_size() <= alloc_max_size(c.get_allocator()));
     47     }
     48 }
     49