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-exception
6//
7//===----------------------------------------------------------------------===//
8
9// UNSUPPORTED: c++03, c++11, c++14, c++17
10
11// Make sure that std::bit_cast works with std::complex. Test case extracted from
12// https://github.com/llvm/llvm-project/issues/94620.
13
14#include <bit>
15#include <complex>
16
17template <class T>
18constexpr void test() {
19 using Complex = std::complex<T>;
20 unsigned char data[sizeof(Complex)] = {0};
21
22 [[maybe_unused]] Complex c = std::bit_cast<Complex>(data);
23}
24
25constexpr bool test_all() {
26 test<float>();
27 test<double>();
28 test<long double>();
29 return true;
30}
31
32int main(int, char**) {
33 test_all();
34 static_assert(test_all());
35 return 0;
36}
37

source code of libcxx/test/std/numerics/complex.number/complex/bit_cast.pass.cpp