xref: /llvm-project/libcxx/test/std/utilities/charconv/charconv.msvc/test.pass.cpp (revision a9882bda96228ca23e166a817f93a7dbc99763cb)
1abb5dd6eSMark de Wever //===----------------------------------------------------------------------===//
2abb5dd6eSMark de Wever //
3abb5dd6eSMark de Wever // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4abb5dd6eSMark de Wever // See https://llvm.org/LICENSE.txt for license information.
5abb5dd6eSMark de Wever // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6abb5dd6eSMark de Wever //
7abb5dd6eSMark de Wever //===----------------------------------------------------------------------===//
8abb5dd6eSMark de Wever 
9abb5dd6eSMark de Wever // UNSUPPORTED: c++03, c++11, c++14
10abb5dd6eSMark de Wever 
116c4267fbSMichael Jones // TODO Investigate why this fails
126c4267fbSMichael Jones // UNSUPPORTED: windows
136c4267fbSMichael Jones 
14*a9882bdaSLouis Dionne // This test times out under msan
15*a9882bdaSLouis Dionne // UNSUPPORTED: msan
16*a9882bdaSLouis Dionne 
17b7042b73SLouis Dionne // to_chars requires functions in the dylib that have not been introduced in older
18b7042b73SLouis Dionne // versions of the dylib on macOS.
19f0fc8c48SLouis Dionne // XFAIL: availability-fp_to_chars-missing
20abb5dd6eSMark de Wever 
21abb5dd6eSMark de Wever // steady_clock requires threads.
22a7f9895cSLouis Dionne // UNSUPPORTED: no-threads
23a7f9895cSLouis Dionne // UNSUPPORTED: no-random-device
24a7f9895cSLouis Dionne // UNSUPPORTED: no-localization
25abb5dd6eSMark de Wever 
26abb5dd6eSMark de Wever // XFAIL: LIBCXX-AIX-FIXME
27abb5dd6eSMark de Wever 
28abb5dd6eSMark de Wever // <charconv>
29abb5dd6eSMark de Wever 
30abb5dd6eSMark de Wever #include <type_traits>
316c4267fbSMichael Jones #include "test_macros.h"
32abb5dd6eSMark de Wever 
33abb5dd6eSMark de Wever // Work-around for sprintf_s's usage in the Microsoft tests.
34abb5dd6eSMark de Wever #ifndef _WIN32
35abb5dd6eSMark de Wever #  define sprintf_s snprintf
36abb5dd6eSMark de Wever #endif
37abb5dd6eSMark de Wever 
38818cfb10SCasey Carter #ifdef _MSVC_STL_VERSION
39818cfb10SCasey Carter #include <xutility>
40818cfb10SCasey Carter using std::_Bit_cast;
41818cfb10SCasey Carter #else
42abb5dd6eSMark de Wever // FUNCTION TEMPLATE _Bit_cast
43abb5dd6eSMark de Wever template <class _To, class _From,
44abb5dd6eSMark de Wever           std::enable_if_t<sizeof(_To) == sizeof(_From) && std::is_trivially_copyable_v<_To> &&
45abb5dd6eSMark de Wever                                std::is_trivially_copyable_v<_From>,
46abb5dd6eSMark de Wever                            int> = 0>
47abb5dd6eSMark de Wever [[nodiscard]] constexpr _To _Bit_cast(const _From& _From_obj) noexcept {
48abb5dd6eSMark de Wever   return __builtin_bit_cast(_To, _From_obj);
49abb5dd6eSMark de Wever }
50818cfb10SCasey Carter #endif
51abb5dd6eSMark de Wever 
52abb5dd6eSMark de Wever // Includes Microsoft's test that tests the entire header.
53abb5dd6eSMark de Wever 
54abb5dd6eSMark de Wever #include "test.cpp"
55