74 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// constexpr complex(const T& re = T(), const T& im = T());12 13#include <complex>14#include <cassert>15 16#include "test_macros.h"17 18template <class T>19void20test()21{22 {23 const std::complex<T> c;24 assert(c.real() == 0);25 assert(c.imag() == 0);26 }27 {28 const std::complex<T> c = 7.5;29 assert(c.real() == 7.5);30 assert(c.imag() == 0);31 }32 {33 const std::complex<T> c(8.5);34 assert(c.real() == 8.5);35 assert(c.imag() == 0);36 }37 {38 const std::complex<T> c(10.5, -9.5);39 assert(c.real() == 10.5);40 assert(c.imag() == -9.5);41 }42#if TEST_STD_VER >= 1143 {44 constexpr std::complex<T> c;45 static_assert(c.real() == 0, "");46 static_assert(c.imag() == 0, "");47 }48 {49 constexpr std::complex<T> c = 7.5;50 static_assert(c.real() == 7.5, "");51 static_assert(c.imag() == 0, "");52 }53 {54 constexpr std::complex<T> c(8.5);55 static_assert(c.real() == 8.5, "");56 static_assert(c.imag() == 0, "");57 }58 {59 constexpr std::complex<T> c(10.5, -9.5);60 static_assert(c.real() == 10.5, "");61 static_assert(c.imag() == -9.5, "");62 }63#endif64}65 66int main(int, char**)67{68 test<float>();69 test<double>();70 test<long double>();71 72 return 0;73}74