brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · fa5e572 Raw
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