brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 2479d4c Raw
76 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <vector>10// vector<bool>11 12// iterator erase(const_iterator position);13 14#include <vector>15#include <cassert>16#include <iterator>17 18#include "test_macros.h"19#include "min_allocator.h"20 21TEST_CONSTEXPR_CXX20 bool tests() {22  bool a1[] = {1, 0, 1};23  {24    std::vector<bool> l1(a1, a1 + 3);25    std::vector<bool>::const_iterator i = l1.begin();26    ++i;27    std::vector<bool>::iterator j = l1.erase(i);28    assert(l1.size() == 2);29    assert(std::distance(l1.begin(), l1.end()) == 2);30    assert(*j == true);31    assert(*l1.begin() == 1);32    assert(*std::next(l1.begin()) == true);33    j = l1.erase(j);34    assert(j == l1.end());35    assert(l1.size() == 1);36    assert(std::distance(l1.begin(), l1.end()) == 1);37    assert(*l1.begin() == true);38    j = l1.erase(l1.begin());39    assert(j == l1.end());40    assert(l1.size() == 0);41    assert(std::distance(l1.begin(), l1.end()) == 0);42  }43#if TEST_STD_VER >= 1144  {45    std::vector<bool, min_allocator<bool>> l1(a1, a1 + 3);46    std::vector<bool, min_allocator<bool>>::const_iterator i = l1.begin();47    ++i;48    std::vector<bool, min_allocator<bool>>::iterator j = l1.erase(i);49    assert(l1.size() == 2);50    assert(std::distance(l1.begin(), l1.end()) == 2);51    assert(*j == true);52    assert(*l1.begin() == 1);53    assert(*std::next(l1.begin()) == true);54    j = l1.erase(j);55    assert(j == l1.end());56    assert(l1.size() == 1);57    assert(std::distance(l1.begin(), l1.end()) == 1);58    assert(*l1.begin() == true);59    j = l1.erase(l1.begin());60    assert(j == l1.end());61    assert(l1.size() == 0);62    assert(std::distance(l1.begin(), l1.end()) == 0);63  }64#endif65 66  return true;67}68 69int main(int, char**) {70  tests();71#if TEST_STD_VER > 1772  static_assert(tests());73#endif74  return 0;75}76