93 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <complex>10 11// template<class T>12// bool13// operator==(const T& lhs, const complex<T>& rhs);14 15#include <complex>16#include <cassert>17 18#include "test_macros.h"19 20template <class T>21TEST_CONSTEXPR_CXX2022void23test_constexpr()24{25#if TEST_STD_VER > 1126 {27 constexpr T lhs(-2.5);28 constexpr std::complex<T> rhs(1.5, 2.5);29 static_assert(!(lhs == rhs), "");30 }31 {32 constexpr T lhs(-2.5);33 constexpr std::complex<T> rhs(1.5, 0);34 static_assert(!(lhs == rhs), "");35 }36 {37 constexpr T lhs(1.5);38 constexpr std::complex<T> rhs(1.5, 2.5);39 static_assert(!(lhs == rhs), "");40 }41 {42 constexpr T lhs(1.5);43 constexpr std::complex<T> rhs(1.5, 0);44 static_assert(lhs == rhs, "");45 }46#endif47}48 49template <class T>50TEST_CONSTEXPR_CXX2051bool52test()53{54 {55 T lhs(-2.5);56 std::complex<T> rhs(1.5, 2.5);57 assert(!(lhs == rhs));58 }59 {60 T lhs(-2.5);61 std::complex<T> rhs(1.5, 0);62 assert(!(lhs == rhs));63 }64 {65 T lhs(1.5);66 std::complex<T> rhs(1.5, 2.5);67 assert(!(lhs == rhs));68 }69 {70 T lhs(1.5);71 std::complex<T> rhs(1.5, 0);72 assert(lhs == rhs);73 }74 75 test_constexpr<T> ();76 return true;77}78 79int main(int, char**)80{81 test<float>();82 test<double>();83 test<long double>();84 85#if TEST_STD_VER > 1786 static_assert(test<float>());87 static_assert(test<double>());88 static_assert(test<long double>());89#endif90 91 return 0;92}93