//===----------------------------------------------------------------------===// // // 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, c++20, c++23 // // class reference_wrapper // [refwrap.comparisons], comparisons // friend constexpr bool operator==(reference_wrapper, reference_wrapper); // Since C++26 #include #include #include #include "test_comparisons.h" #include "test_macros.h" #include "helper_concepts.h" #include "helper_types.h" // Test SFINAE. static_assert(std::equality_comparable_with, std::reference_wrapper>); static_assert(!std::equality_comparable_with, std::reference_wrapper>); // Test equality. template constexpr void test() { T i{92}; T j{84}; std::reference_wrapper rw1{i}; std::reference_wrapper rw3{j}; std::reference_wrapper crw1{i}; std::reference_wrapper crw3{j}; AssertEqualityReturnBool(); assert(testEquality(rw1, crw1, true)); assert(testEquality(rw1, crw3, false)); } constexpr bool test() { test(); test(); return true; } int main(int, char**) { test(); static_assert(test()); return 0; }