xref: /llvm-project/libcxx/test/std/containers/sequences/vector.bool/reference/flip.pass.cpp (revision 98d3d5b5da66e3cf7807c23a0294280bb796466b)
15d2b8fa1SNikolas Klauser //===----------------------------------------------------------------------===//
25d2b8fa1SNikolas Klauser //
35d2b8fa1SNikolas Klauser // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45d2b8fa1SNikolas Klauser // See https://llvm.org/LICENSE.txt for license information.
55d2b8fa1SNikolas Klauser // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65d2b8fa1SNikolas Klauser //
75d2b8fa1SNikolas Klauser //===----------------------------------------------------------------------===//
85d2b8fa1SNikolas Klauser 
95d2b8fa1SNikolas Klauser // <vector>
105d2b8fa1SNikolas Klauser 
115d2b8fa1SNikolas Klauser // flip()
125d2b8fa1SNikolas Klauser 
135d2b8fa1SNikolas Klauser #include <cassert>
145d2b8fa1SNikolas Klauser #include <vector>
155d2b8fa1SNikolas Klauser 
16*98d3d5b5SNikolas Klauser #include "test_macros.h"
17*98d3d5b5SNikolas Klauser 
test()18*98d3d5b5SNikolas Klauser TEST_CONSTEXPR_CXX20 bool test() {
195d2b8fa1SNikolas Klauser   std::vector<bool> vec;
205d2b8fa1SNikolas Klauser   typedef std::vector<bool>::reference Ref;
215d2b8fa1SNikolas Klauser   vec.push_back(true);
225d2b8fa1SNikolas Klauser   vec.push_back(false);
235d2b8fa1SNikolas Klauser   Ref ref = vec[0];
245d2b8fa1SNikolas Klauser   assert(vec[0]);
255d2b8fa1SNikolas Klauser   assert(!vec[1]);
265d2b8fa1SNikolas Klauser   ref.flip();
275d2b8fa1SNikolas Klauser   assert(!vec[0]);
285d2b8fa1SNikolas Klauser   assert(!vec[1]);
295d2b8fa1SNikolas Klauser   ref.flip();
305d2b8fa1SNikolas Klauser   assert(vec[0]);
315d2b8fa1SNikolas Klauser   assert(!vec[1]);
325d2b8fa1SNikolas Klauser 
335d2b8fa1SNikolas Klauser   return true;
345d2b8fa1SNikolas Klauser }
355d2b8fa1SNikolas Klauser 
main(int,char **)365d2b8fa1SNikolas Klauser int main(int, char**) {
375d2b8fa1SNikolas Klauser   test();
38*98d3d5b5SNikolas Klauser #if TEST_STD_VER > 17
39*98d3d5b5SNikolas Klauser     static_assert(test());
40*98d3d5b5SNikolas Klauser #endif
415d2b8fa1SNikolas Klauser 
425d2b8fa1SNikolas Klauser   return 0;
435d2b8fa1SNikolas Klauser }
44