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