1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant//                     The LLVM Compiler Infrastructure
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <complex>
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// template<> class complex<double>
130e20cae1a5be18fba591cd884aa2a389b66a3f49Howard Hinnant// {
140e20cae1a5be18fba591cd884aa2a389b66a3f49Howard Hinnant// public:
150e20cae1a5be18fba591cd884aa2a389b66a3f49Howard Hinnant//     constexpr complex(const complex<float>&);
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// };
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <complex>
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert>
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main()
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
23410f2def474e25c7997d0b539391f5715e287e65Howard Hinnant    {
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    const std::complex<float> cd(2.5, 3.5);
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    std::complex<double> cf(cd);
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(cf.real() == cd.real());
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(cf.imag() == cd.imag());
28410f2def474e25c7997d0b539391f5715e287e65Howard Hinnant    }
29410f2def474e25c7997d0b539391f5715e287e65Howard Hinnant#ifndef _LIBCPP_HAS_NO_CONSTEXPR
30410f2def474e25c7997d0b539391f5715e287e65Howard Hinnant    {
31410f2def474e25c7997d0b539391f5715e287e65Howard Hinnant    constexpr std::complex<float> cd(2.5, 3.5);
32410f2def474e25c7997d0b539391f5715e287e65Howard Hinnant    constexpr std::complex<double> cf(cd);
33410f2def474e25c7997d0b539391f5715e287e65Howard Hinnant    static_assert(cf.real() == cd.real(), "");
34410f2def474e25c7997d0b539391f5715e287e65Howard Hinnant    static_assert(cf.imag() == cd.imag(), "");
35410f2def474e25c7997d0b539391f5715e287e65Howard Hinnant    }
36410f2def474e25c7997d0b539391f5715e287e65Howard Hinnant#endif
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}
38