14cb7d781SMarshall Clow //===----------------------------------------------------------------------===// 24cb7d781SMarshall Clow // 357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 64cb7d781SMarshall Clow // 74cb7d781SMarshall Clow //===----------------------------------------------------------------------===// 84cb7d781SMarshall Clow 94cb7d781SMarshall Clow // <vector> 104cb7d781SMarshall Clow 114cb7d781SMarshall Clow // class vector 124cb7d781SMarshall Clow 134cb7d781SMarshall Clow // size_type size() const noexcept; 144cb7d781SMarshall Clow 154cb7d781SMarshall Clow #include <vector> 164cb7d781SMarshall Clow #include <cassert> 174cb7d781SMarshall Clow 184cb7d781SMarshall Clow #include "test_macros.h" 194cb7d781SMarshall Clow #include "min_allocator.h" 204cb7d781SMarshall Clow tests()21*98d3d5b5SNikolas KlauserTEST_CONSTEXPR_CXX20 bool tests() 224cb7d781SMarshall Clow { 234cb7d781SMarshall Clow { 244cb7d781SMarshall Clow typedef std::vector<bool> C; 254cb7d781SMarshall Clow C c; 264cb7d781SMarshall Clow ASSERT_NOEXCEPT(c.size()); 274cb7d781SMarshall Clow assert(c.size() == 0); 284cb7d781SMarshall Clow c.push_back(false); 294cb7d781SMarshall Clow assert(c.size() == 1); 304cb7d781SMarshall Clow c.push_back(true); 314cb7d781SMarshall Clow assert(c.size() == 2); 32c4eb5056SMarshall Clow c.push_back(false); 334aef6a08SBilly Robert O'Neal III assert(c.size() == 3); 344cb7d781SMarshall Clow c.erase(c.begin()); 354cb7d781SMarshall Clow assert(c.size() == 2); 364cb7d781SMarshall Clow c.erase(c.begin()); 374cb7d781SMarshall Clow assert(c.size() == 1); 384cb7d781SMarshall Clow c.erase(c.begin()); 394cb7d781SMarshall Clow assert(c.size() == 0); 404cb7d781SMarshall Clow } 414cb7d781SMarshall Clow #if TEST_STD_VER >= 11 424cb7d781SMarshall Clow { 434cb7d781SMarshall Clow typedef std::vector<bool, min_allocator<bool>> C; 444cb7d781SMarshall Clow C c; 454cb7d781SMarshall Clow ASSERT_NOEXCEPT(c.size()); 464cb7d781SMarshall Clow assert(c.size() == 0); 474cb7d781SMarshall Clow c.push_back(false); 484cb7d781SMarshall Clow assert(c.size() == 1); 494cb7d781SMarshall Clow c.push_back(true); 504cb7d781SMarshall Clow assert(c.size() == 2); 51c4eb5056SMarshall Clow c.push_back(false); 524aef6a08SBilly Robert O'Neal III assert(c.size() == 3); 534cb7d781SMarshall Clow c.erase(c.begin()); 544cb7d781SMarshall Clow assert(c.size() == 2); 554cb7d781SMarshall Clow c.erase(c.begin()); 564cb7d781SMarshall Clow assert(c.size() == 1); 574cb7d781SMarshall Clow c.erase(c.begin()); 584cb7d781SMarshall Clow assert(c.size() == 0); 594cb7d781SMarshall Clow } 604cb7d781SMarshall Clow #endif 612df59c50SJF Bastien 62*98d3d5b5SNikolas Klauser return true; 63*98d3d5b5SNikolas Klauser } 64*98d3d5b5SNikolas Klauser main(int,char **)65*98d3d5b5SNikolas Klauserint main(int, char**) 66*98d3d5b5SNikolas Klauser { 67*98d3d5b5SNikolas Klauser tests(); 68*98d3d5b5SNikolas Klauser #if TEST_STD_VER > 17 69*98d3d5b5SNikolas Klauser static_assert(tests()); 70*98d3d5b5SNikolas Klauser #endif 712df59c50SJF Bastien return 0; 724cb7d781SMarshall Clow } 73