|  | //===----------------------------------------------------------------------===// | 
|  | // | 
|  | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | 
|  | // See https://llvm.org/LICENSE.txt for license information. | 
|  | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | // UNSUPPORTED: c++03, c++11, c++14, c++17 | 
|  |  | 
|  | // <vector> | 
|  |  | 
|  | // class vector<bool, Allocator> | 
|  |  | 
|  | // template<class T, class Allocator> | 
|  | //   constexpr synth-three-way-result<T> operator<=>(const vector<T, Allocator>& x, | 
|  | //                                                   const vector<T, Allocator>& y); | 
|  |  | 
|  | #include <cassert> | 
|  | #include <vector> | 
|  |  | 
|  | #include "test_comparisons.h" | 
|  |  | 
|  | constexpr bool test_sequence_container_spaceship_vectorbool() { | 
|  | // Empty containers | 
|  | { | 
|  | std::vector<bool> l1; | 
|  | std::vector<bool> l2; | 
|  | assert(testOrder(l1, l2, std::strong_ordering::equivalent)); | 
|  | } | 
|  | // Identical contents | 
|  | { | 
|  | std::vector<bool> t1{true, true}; | 
|  | std::vector<bool> t2{true, true}; | 
|  | assert(testOrder(t1, t2, std::strong_ordering::equivalent)); | 
|  |  | 
|  | std::vector<bool> f1{false, false}; | 
|  | std::vector<bool> f2{false, false}; | 
|  | assert(testOrder(f1, f2, std::strong_ordering::equivalent)); | 
|  | } | 
|  | // Less, due to contained values | 
|  | { | 
|  | std::vector<bool> l1{true, false}; | 
|  | std::vector<bool> l2{true, true}; | 
|  | assert(testOrder(l1, l2, std::strong_ordering::less)); | 
|  | } | 
|  | // Greater, due to contained values | 
|  | { | 
|  | std::vector<bool> l1{true, true}; | 
|  | std::vector<bool> l2{true, false}; | 
|  | assert(testOrder(l1, l2, std::strong_ordering::greater)); | 
|  | } | 
|  | // Shorter list | 
|  | { | 
|  | std::vector<bool> l1{true}; | 
|  | std::vector<bool> l2{true, false}; | 
|  | assert(testOrder(l1, l2, std::strong_ordering::less)); | 
|  |  | 
|  | std::vector<bool> t1{true}; | 
|  | std::vector<bool> t2{true, true}; | 
|  | assert(testOrder(t1, t2, std::strong_ordering::less)); | 
|  |  | 
|  | std::vector<bool> f1{false}; | 
|  | std::vector<bool> f2{false, false}; | 
|  | assert(testOrder(f1, f2, std::strong_ordering::less)); | 
|  |  | 
|  | std::vector<bool> e; | 
|  | assert(testOrder(e, t1, std::strong_ordering::less)); | 
|  | assert(testOrder(e, f1, std::strong_ordering::less)); | 
|  | } | 
|  | // Longer list | 
|  | { | 
|  | std::vector<bool> l1{true, false}; | 
|  | std::vector<bool> l2{true}; | 
|  | assert(testOrder(l1, l2, std::strong_ordering::greater)); | 
|  |  | 
|  | std::vector<bool> t1{true, true}; | 
|  | std::vector<bool> t2{true}; | 
|  | assert(testOrder(t1, t2, std::strong_ordering::greater)); | 
|  |  | 
|  | std::vector<bool> f1{false, false}; | 
|  | std::vector<bool> f2{false}; | 
|  | assert(testOrder(f1, f2, std::strong_ordering::greater)); | 
|  |  | 
|  | std::vector<bool> e; | 
|  | assert(testOrder(t2, e, std::strong_ordering::greater)); | 
|  | assert(testOrder(f2, e, std::strong_ordering::greater)); | 
|  | } | 
|  |  | 
|  | return true; | 
|  | } | 
|  |  | 
|  | int main(int, char**) { | 
|  | assert(test_sequence_container_spaceship_vectorbool()); | 
|  | static_assert(test_sequence_container_spaceship_vectorbool()); | 
|  | return 0; | 
|  | } |