Home | History | Annotate | Download | only in list.cons
      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 // <list>
     11 
     12 // list(size_type n, const T& value, const Allocator& = Allocator());
     13 
     14 #include <list>
     15 #include <cassert>
     16 #include "DefaultOnly.h"
     17 #include "test_allocator.h"
     18 #include "min_allocator.h"
     19 
     20 int main()
     21 {
     22     {
     23         std::list<int> l(3, 2);
     24         assert(l.size() == 3);
     25         assert(std::distance(l.begin(), l.end()) == 3);
     26         std::list<int>::const_iterator i = l.begin();
     27         assert(*i == 2);
     28         ++i;
     29         assert(*i == 2);
     30         ++i;
     31         assert(*i == 2);
     32     }
     33     {
     34         std::list<int> l(3, 2, std::allocator<int>());
     35         assert(l.size() == 3);
     36         assert(std::distance(l.begin(), l.end()) == 3);
     37         std::list<int>::const_iterator i = l.begin();
     38         assert(*i == 2);
     39         ++i;
     40         assert(*i == 2);
     41         ++i;
     42         assert(*i == 2);
     43     }
     44     {
     45         // Add 2 for implementations that dynamically allocate a sentinel node and container proxy.
     46         std::list<int, limited_allocator<int, 3 + 2> > l(3, 2);
     47         assert(l.size() == 3);
     48         assert(std::distance(l.begin(), l.end()) == 3);
     49         std::list<int>::const_iterator i = l.begin();
     50         assert(*i == 2);
     51         ++i;
     52         assert(*i == 2);
     53         ++i;
     54         assert(*i == 2);
     55     }
     56 #if TEST_STD_VER >= 11
     57     {
     58         std::list<int, min_allocator<int>> l(3, 2);
     59         assert(l.size() == 3);
     60         assert(std::distance(l.begin(), l.end()) == 3);
     61         std::list<int, min_allocator<int>>::const_iterator i = l.begin();
     62         assert(*i == 2);
     63         ++i;
     64         assert(*i == 2);
     65         ++i;
     66         assert(*i == 2);
     67     }
     68     {
     69         std::list<int, min_allocator<int>> l(3, 2, min_allocator<int>());
     70         assert(l.size() == 3);
     71         assert(std::distance(l.begin(), l.end()) == 3);
     72         std::list<int, min_allocator<int>>::const_iterator i = l.begin();
     73         assert(*i == 2);
     74         ++i;
     75         assert(*i == 2);
     76         ++i;
     77         assert(*i == 2);
     78     }
     79 #endif
     80 }
     81