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 KlauserTEST_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 Klauserint 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