dynarmic/test/compile-fp-test.cc

63 lines
2.8 KiB
C++
Raw Normal View History

Squashed 'externals/fmt/' changes from 9e8b86fd2..b6f4ceaed b6f4ceaed Update version 15f812dae Update changelog 6884aab49 Update changelog 88ec4e706 Bump version dd3d2490e Update changelog 739055ae7 Fix apidocs dbbd711f4 Suppress a warning 98cbb6a43 Fix ABI compatiblity issue 214cf13f1 Fix endianness bug in write_digit2_separated (#2699) 17a5c808d Restore FMT_API on error_handler::on_error() (#2696) fc1783fcc Avoid undefined symbols with mingw-w64 (#2692) 1b193e7b3 Deprecate more 8e59744b8 Switch to new github auth mechanism 7081a6aa3 Update version 64dc8fbad Bump version fc8e3de7d Fix manage.py script 57bee9fcd Fix formating dce52e491 Update changelog 9405a4724 Update changelog 495b8bf12 Update changelog e221166fa Update changelog 035cab8da Update changelog 89c6ed12b Clarify in comments (for now) deprecated map functions e462da828 Add some noexcept (#2684) 79c66d66b Update changelog 5d37f705f Update changelog 6bb370cec Update changelog bb6920157 Fix tuple join 4fac7daae Cleanup bit_cast 3617c2795 Update changelog 9c0c1bcdb Simplify tuple formatting 187e8db1b Update changelog c7f88180f add tests for format string compile-time checks 8a2c3fb88 add reverse tests to compile-error-test 1164eda5a disable compile-error-test on Windows 4482f6f1f rewrite compile-error-test to use non-header-only library 796662a61 Escape range items convertible to std::string_view 33ee4cc51 Improve noexception test 3bbf2c673 Fix throw with exceptions disabled 074c9c52e Update changelog 3110ec5a2 Update changelog 3014b3d77 Clarify that C strings must be null-terminated eab2ea9fc Replace an assert with an exception 21ed92a6e Update changelog 04111dd1e Fix issue #2670 (#2671) 817788fbf remove incorrect C++20 check from test/CMakeLists.txt (#2663) 4511030af Minor code style tweaks for consistency 7812813a3 Don't explicitly delete copy ctor of dynamic_format_arg_store (#2664) 664cd6067 Remove std-format-test 784e2a7b4 Fix an overflow when formatting very large durations fc2a376d8 Remove two expressions which had no effect (reported by LGTM) c5aafd8f9 expose headers as SYSTEM depending on special configuration option eaddd1e3c Fix handling of byte 2d4457758 Try fixing byte regression e46392ea2 deprecate _format UDL in code using FMT_DEPRECATED c882790a2 Add a set formatter 121002d70 Add a map formatter be51ee1ce Disable broken copy ctor of dynamic_format_arg_store 659de779e Fix a UB in parse_format_specs when begin is null 51b14b6c0 remove commented out lines 223a0fa55 move gtest-specific check into gtest/CMakeLists.txt ef72b471f enable named arguments check in compile-time checks (#2649) 82246b876 fix throw with exceptions disabled (#2647) 35f60377a Update ChangeLog.rst 3a951a66c Avoid qualifying by inline namespace. Fixes #2642. (#2643) e0136fc8b Qualify calls to make_wformat_args. Fixes #2639. (#2641) ac1b5f3da Refactor problematic trailing returns in arg_mapper fd62fba98 Don't convert scoped enums to integers c652f8243 Make header guard consistent with header name a9c7b9b8f Clarify that _format is deprecated e4f0564aa Disable is_streamable for string[_view] 91533d3c3 Minor tweaks to chrono subsecond formatting 0bbc9708f Implement c++20 std::chrono::duration subsecond formatting (#2623) 9d5b9defd Enable tzset only on Windows desktop app (#2633) 215f21a03 Detect overflow on large precision c240d98ff Optimize tm formatting (Non C-locales and %Z) (#2617) 6ab73113f Mark grow as FMT_CONSTEXPR20 (#2630) 713c7c7c6 Cleanup os.cc 9b1807a8a fix int -> uint warning (#2611) ec3b097cb [doc] FMT_STRING supports C++14 and no-op in C++11 (#2620) c472a2781 Fix handling of very large precision in fixed format 201971e29 Make MSVC use [[nodiscard]] (#2615) acad8cfab Reformat all source code; no functional changes 491ba2dda Annotate fmt::format and fmt::formatted_size as [[nodiscard]] 5abe9e826 Add platform-specific 'z' formatter be3a3a5ae Use predefined formats for C-locale a3ab36c80 Formatting of function pointers, member function pointers, member object pointers... (#2610) 19cac63fe Broken link in README.rst 43419a4ad Workaround a bug in gcc c089f7d49 Simplify std::tm formatter aa5517f6b Reuse tm_writer in chrono_formatter 50140be7a Reuse tm_writer in weekday formatter 8b8945499 Improve consistency 5380ff4d8 Detect types convertible to unformattable pointers 094b66e81 changed locale retrieval way to a fancy one b69ae4854 Reorder classes (#2591) 0b843af56 sped up chrono.h formatting for cases without providing locale (#2576) 12b1d8b14 Fix precision 0 with std::chrono::duration and added additional tests. (#2588) e67f92c55 Cleanup warnings with nvhpc/21.9. (#2582) 812733cc9 const qualify format function for systen_clock 028f22775 Handle implicit conversions in write 5b0aa638c Minor grammar fix 6eaceb5f7 Fix incompatible between docutils 1.18.0 and sphinx 3.3.0 (#2575) 0697c5edb FMT_USE_FCNTL can be predefined (#2573) 1031eedf2 Replacing strftime with std::time_put (#2550) 90034e4c4 Add FMT_ASSERT and validation of values of struct tm members (#2564) df40e9467 Upgrade `module-test` to msvc 16.11.5 and 17.0-pre5 (#2558) e6d5059cb Simplify js tag in basic-bootstrap theme (#2562) 3b6e409cd Enable `consteval` for msvc 17.0-pre5 (#2559) 249f03bbb do not detect LLVM based IBMXL compiler (on ppc) as clang (#2555) 7463c8320 Fix overflow for very bigger years (>2*10^9) (#2551) 1266c2b60 Fix handling of exotic character types 684e2fdc9 Minor cleanup a1d586302 Minor cleanup 7a604cdd9 Cleanup aeb54b0dd Fix bug on '%Y' and '%C' formats with negative years Requested changes f88c020fc Generalization of strftime/wcsftime function calls in tests 2eeddba75 Renaming, splitting of functions 275454608 Fix errors in ISO week-base-year formatter 218cecb6d Fix error in test e9f4453b0 Fix Microsoft Visual Studio 14.0 build 27c3674ce Improve performance 5dc3dd3d4 New tests f8542cd98 Unified formatters for std::chrono::time_point<std::chrono::system_clock, Duration> and std::tm 4707373d3 Fix year formatter 79c00ad8f Improve ISO week-base-year formatter fbaaa5906 Improve week of the year formatter cde44ddb7 Improve year formatter b04601b91 Switch from std::strftime/std::wcsftime to internal implementation for locale independent formats d3d30a46f New tests 7911d8d3f Add format spec checker fbbfc3b03 Reorder formatters 509eac957 Workarounds for implementation-defined std::strftime behavior 85b38190d New tests for all C++11 std::strftime format specifiers 7aca36bca Extending fmt::join to support C++20-only ranges. (#2549) f5371a75f locale.h -> format.h febdef43f fix: add workaround for intel parameter pack bug f56756986 fix: check to make sure both 'if constexpr' and return type deduction are available dcd282bb2 Namespace qualify calls to get 9c14474d3 Include `<bit>` when using `std::bit_cast` 1e96e0176 Fix compiler flag check (#2540) 7e4bc9451 Speeding up write_significand() (#2499) 26c1ca4c3 Replaced default spec with equivalent one, which is potentially more optimizable (#2537) 1e865b353 Fix docs 4a85db1ce Change default open mode to -rw-r--r-- (#2530) 0a985fd4c Move size_ initialization to initializer list (#2529) 012cc709d Workaround gcc _Pragma bug 59884 d6590e3bd Fix compiler check 134aec40f Fix search in docs 48a476ae0 Update example (#2522) 023c2018f Don't use strlen in constexpr 800d4c8ac Refactor Windows workarounds 32865aeaa changed detection of Intel Compiler Classic to distinguish MS-Windows (#2510) 7b339795a Describe a better approach of how to use {fmt} as a depency in a Bazel project (#2516) ae9bbe116 Suppress warning C4127 in chrono.h (conditional expression is constant) (#2518) 927dbd134 Misplaced comma in README.rst (#2515) 2a9a77dd8 Remove misplaced comment 1aee4bc90 Refactor FP formatting e1bd6cc91 Refactor FP formatting 027fcaf05 Replace use_grisu with fallback since Grisu is only one of multiple implemented algorithms 716d69f27 Refactor FP formatting ff7e73af6 Always run grisu_gen_digits before fallback_format 2976e31ac Refactor format_float 807ee5ec3 Disable consteval in Apple clang d9a731d48 Add basic support for Bazel (#2505) 9c57357e0 Add `static` to a table (#2509) 2742611ca Fix formatting 5092b198b Document group_digits b4d9d82e1 make FP formatting available to be used at compile-time (#2426) d9fd695ac Fix wchar_t tm formatting 92614ecbf Optimize %T in tm formatting aaeca12d8 Move FMT_MAYBE_UNUSED to format.h where it is used 3d0c7ae38 Move data to format.cc 04e3a79f7 Use memcpy in more cases in copy2 e47e99bb0 Simplify format_decimal (#2498) 9b6b0e403 Remove data 4d1c6034e Deprecate basic_data a3348eccd Deprecate most of basic_data 3a0448148 Remove data::hex_digits ad77331c0 Move log10_2_significand to format-inl.h d9ebc4e82 Add a function to get sign char c00eb4f4c Add missing inline 25af02f21 positive -> nonnegative (#2493) 67cb2dad3 Optimize %F in tm formatting 1aa98f8b9 Eliminate double copying in vformat_to_n (#2489) a58c13382 Improve code_point_length codegen on older gcc aeee70a81 Remove unnecessary cast c771ba361 Fix build for the clang-10 / libstdc++-9 couple (#2491) ab6e2272c Clarify shifts encoding e4728409e Use throw_format_error in more places to reduce bloat e3ebf366a Inline padding shifts 894faf3fe Refactor presentation types 4eb97fa4e Reduce code bloat 6b55c8325 is_const_formattable -> has_const_formatter 2fe94ad7e Make specifiers support in tuple_join an opt-in 3940de595 thousands -> group_digits c4d0f96a6 Implement format specs in fmt::thousands 3b9c44268 Implement thousands separators without locales 08f98c7fa Simplify get_arg_index_by_name a151f955a Remove FMT_OVERRIDE 42a225cbd Remove redundand final bf20d1990 Simplify the core API fc0884037 Move FMT_GCC_VISIBILITY_HIDDEN to format.h 1aeed2dbc Require inline namespaces 799bea473 Remove FMT_HAS_GXX_CXX11 60cd5ea3f Add support for more formattable types in ranges 4fd9a00f3 Simplify ostream interface 568156389 Cleanup ostream interface 20931baf1 Disable fallback_formatter for arrays d58d19ba3 Fix an odr violation in ranges.h (#2483) ee0659f8b Fix formatting of abstract classes via ostream 8029bf955 Fix copy_str performance (#2477) 2520f410c Workaround for #2478 (#2482) ee63f5f04 Workaround to MSVC bug (#2474) (#2476) 1aaf72fb6 Add an example to fmt::runtime c1313c205 Clarify that format_to[_n] do not append a terminating null cb0f177c3 Improve docs 71677e520 Improve docs 4db572352 add fuzzers for chrono timepoint and localtime,gmtime (#2469) dc7f3ef2b Fix header name 419ba86a9 Improve docs 6a5b4d5fa Document format_string 2599163b8 Document format_string 8ef22f774 Update docs c0c4d1ada Update docs 729a44e67 Depreate strtod and remove problematic tests 74c111896 Apply force inline 596508a92 Cleanup 043e3b342 Remove static_assert from arg_mapper 8b0cb944d Fix error reporting when mixing character types 117fc6707 CI: replace g++ C++20 build to test FP formatting at compile-time c79a3841e make detail::fp and detail::bigit constexpr 5888de9f3 make detail::make_checked() constexpr 04b4b69b1 make detail::bit_cast() constexpr with C++20 fd34a3d24 make detail::basic_memory_buffer constexpr with C++20 6d597e39c Fix overload ambiguity in arg_mapper b9ce56d93 Improve comments f889e52a1 Improve error reporting 34caecd6b Use consistent initialization style a44c8f651 reimplement `formatter<tuple_join_view>` (#2457) 4b8bda25c Fix 2462 6b5e6119e set clang in one place 7af1dc1d2 fix UB in fuzzer common (memcpy on nullptr) e77686f7a clang format 2207ea0b3 More escaping a212ff757 Escape invalid code points a76031e11 check -> is_printable a7f280765 Improve naming 07d033ecb Fix is_printable cdb4299ac Add Unicode support to is_printable 7df2c82a8 Rewrite printable.py codegen to emit C++ 6cf90d7ce Add script license and fix python version 2f1ad8ed3 Add printable codegen from Rust 371d8e2ee Escape Unicode 6397095ca More escaping f69a57253 Don't overescape wide strings 11b07a56b We should escape b559cfd4c Implement basic escaping 11d49491c Handle global locale 6ea6cf946 Add decimal separator support to float 9730a2af0 Update ChangeLog.rst c2ed5f686 Update ChangeLog.rst 7b66e72e2 Use builtin intrinsics on intel (#2450) d57b2a652 Suppress a warning bdfbd794e Cleanup begin/end usage 111de881f Don't copy non-const-iterable ranges d6e882ed8 Undo the move because the doc is not a GH template f488eed10 Resolve default constructor error in Xcode 7.2.1 and 8.2.1 652c3653b Move CONTRIBUTING.md to .github fb19faa31 Improves README with svg badge (#2446) 07211701f Disable the -Wstringop-overflow warning from GCC 7 (#2442) bba0a9d96 Make flush public f1794a885 Switch to threadsafe death test style 0544a2279 Exclude fallback functions when FMT_BUILTIN_CLZ(LL) is not defined (#2434) 5c222f056 Add support for nonconst formattable types 3def950b8 Set FMT_CAN_MODULE=OFF for MSVC 19.29.30035+ 63fe2d5bd Add copy constructor for dynamic_format_arg_store, and test 561834650 Improve digit count f20f50368 Replace `throw` with `FMT_THROW` (#2427) 00235d8a9 fix module test odr violations (#2414) 2038bf618 Update format_to usage e41ac1f87 Don't use deprecated API in docs 8465869d7 Move ignore_unused to detail 3d53d1539 Warning removals in test code (#2399) 20e4ef8b4 Pass significand_size by value c4a3c2342 Refactor locale handling 7a0d30175 Update README.rst f2b03facd Include test sources to pick up functions and classes from the module rather than from the non-modular library which is baked into the `test-main` library. (#2356) 02ad5e11d Add faint, blink, reverse and conceal to the emphases (#2394) d141cdbeb Update version cfc05e05f Bump version 8ea312633 Update changelog e461f3dbb Minor consitency and comment tweaks 54014e42e silence warning C4100 on MSVC 2019 when exceptions are disabled (#2397) 3e7a29cc9 Workaround clang/gcc incompatibility 00a57a9f8 Update changelog 1d7384530 Add missing presentation type checks for std::string (#2402) 889bbf27a Fix missing std::get overload in MSVC (#2407) 5f8473914 Remove outdated apidoc 785908ee3 Fix warnings fbb70eec5 suppress unused variable warnings (#2381) 002bb759f Remove unneeded `num_result_bigits` decrement a3f762c5a [doc] Minor: fix ``code``. c3c27e5ab Fix MSVC warning C4819 c6b1f181a Fix docs 94564b058 Fix docs 0fc73a2a8 Merge branch 'master' of github.com:fmtlib/fmt 3156fcf5f Switch to older breathe version f85fb9fdf Adjust definition for FMT_HAS_INCLUDE 0bc3d664e Fix docs e5c46e13e Fix docs: breathe 18 and earlier corrupts trailing return type 49a3b58c8 Specify size for static data arrays d0c8d45a2 apt update before install c9a10631c format: do not use udl_{arg,formatter} return types when UDL is not in use 3bd806f12 Eliminate intel compiler warning fd16bcb20 Fix bug in cmake join function 5221242f6 Instruct msvc to report the _true_ value in `__cplusplus` and force _full_ C++ conformance 31a5f0d39 Bump version in inline namespace 102a4d492 Bump version in inline namespace f68508b6c Update ChangeLog.rst git-subtree-dir: externals/fmt git-subtree-split: b6f4ceaed0a0a24ccf575fab6c56dd50ccf6f1a9
2022-02-15 11:15:34 +00:00
// Formatting library for C++ - formatting library tests
//
// Copyright (c) 2012 - present, Victor Zverovich
// All rights reserved.
//
// For the license information refer to format.h.
#include "fmt/compile.h"
#include "gmock/gmock.h"
#if defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806 && \
defined(__cpp_constexpr) && __cpp_constexpr >= 201907 && \
defined(__cpp_constexpr_dynamic_alloc) && \
Squashed 'externals/fmt/' changes from b6f4ceaed..c4ee72653 c4ee72653 Update version fa2eb2d2e Bump version 35f72bf21 Bump version d22f00d7e Update changelog 4e8d21560 Update changelog 84eecb656 Prune CI configs 55727e3b2 More compile-time checks 1010b7f14 Update docs 2ac51fc44 Update changelog 831132293 Workaround for Microsoft Visual Studio 2022 Internal compiler error. 115e00e0b Replace __cplusplus with FMT_CPLUSPLUS. 94114b05c New CI: Microsoft Visual Studio 2022. d2a232082 Fix partial specialization problem for filesystem for Visual Studio (#2957) 0c06c81da Deprecated implicit conversion of enums to ints for consistency with scoped enums c12b4c0cf New CI: GCC-8 C++17, Clang-8 C++17. 99bb5b1d1 Fix std::variant, std::filesystem::path tests on GCC-8, Clang-7,8. e29c2bc60 Update docs c65e4286b Update changelog 69c24e47e Update changelog 6a775e956 Add support for 'std::variant' in C++17 (#2941) 51535866d Update docs 3ef5caa9f Update docs dccd3e674 Fix docs 9cb02aaaa Fix UDLs e6d478f8e Update changelog and docs 2d931b149 Add fmt::streamed 0506a5733 Update changelog e8bd2a804 Fix enable_ifs for map formatter (#2944) 7c56e11ec Update changelog 69a20db08 Update changelog and fix an apidoc comment 7a2a97c88 Update changelog 568233889 Fix is_formattable for tuple-like types. (#2940) f0de12844 Remove /source-charset:utf-8 compile option. eaa8efb95 Fix ofstream handling in msvc fb991e9d3 Update changelog 8e47cfd1c fix -Wsign-conversion warning 247187586 Make the tests pass on a CHERI system. b135f1c01 Refactor handling of argument types f61a1e813 Add format_arg_types 48b7e3daf Added a FMT_STRING wrapper for system_error() call. 4bb3af7a6 Improve compile-time checks d02c582b9 Fix 'duplicate symbol' error. b59d8c3a2 Make std::filesystem::path formatter utf-8 compatible. 232e21d51 Add utf-8 test for std::filesystem::path formatter. 864465419 Docs: add comment about empty format context range ba50c19e8 use qualified call to avoid ADL conflict with std::format_to 9d6039595 Fix compilation on ppc64 a2681aabc Debug ppc failure bfc576736 Add support for std.h in Bazel build 798d09bb7 Debug ppc failure 8c7cf5139 Cleanup cdfacb434 Cleanup parse_format_string 926ddd063 Move compile string to detail cb682f36f Move to_string_view to detail 156744ad4 Simplify fmt::runtime d9c7166cf bi_iterator -> base 11316b29a chore: Set permissions for GitHub actions fe6eb792d Cleanup check_format_string 054b1d980 Remove unused include e927149f8 Cleanup macros 1761e2666 Remove FMT_CONSTEXPR_DECL d6b568a6c Cleanup string_view checks c83a5d42b FMT_MSC_VER -> FMT_MSC_VERSION 27cd68c30 Cleanup macros 08be4abb3 Remove FMT_NVCOMPILER_VERSION 661b19254 Remove FMT_HEADER_ONLY_CONSTEXPR20 d1026fa5d Remove extern format_float 7e63b600b Make to_string work with __float128 b2ea212cd Update README.rst c2fcdc54e Move format_float to format.h for __float128 2b9037a19 Move basic_fp to format.h for compile-time formatting 542785ccb Get rid of detail::bits 65dd2ea52 Use write_escaped_string to std::filesystem::path. 9860f67cd Improve xchar support for std formatters. 03b1b2838 Improve std::filesystem::path formatter. 4f9311e68 Fix definition of error_handler::on_error 652fea45a Visual Studio 2022: fmt/format.h(1526,27): warning C4127: conditional expression is constant #2908 1f9eae7e3 Add xchar support for write_escaped_string. 90b68783f Skip cmake targets inclusion if fmt::fmt already exists (#2907) ce246aaf7 Remove deprecated APIs edeb3d809 Remove deprecated APIs 496aff7c3 Remove deprecated APIs f5cdf7cb0 Simplify snprintf_float 440512f08 Remove deprecated APIs 621eb80bb Remove deprecated APIs 5c7d315de Remove locale.h c6324009b Add initial double-double support 147e8ca58 Fix Windows max mix-up (#2903) 6bf039d75 Add std::thread::id formatter 9730fb015 Fix path formatter f0903ad9d Add a path formatter 8833f386e Merge branch 'master' of github.com:fmtlib/fmt 5ab9d3925 Namespace-qualify format_to to avoid conflict with std::format_to af5644c27 Update README.rst 3e28dc021 VS2022 17.2: C4189: 'zero': local variable is initialized but not referenced #2891 (#2892) f6f920a1a Tweak a comment and apply clang-format ae963e444 Implement constexpr isfinite to avoid producing NaN 358f5a7e5 Make precision computation consistent with width f63afd161 Fixed all clang -Wsigned-enum-bitfield warnings (#2882) 7e4ad4017 Add initial support for double-double ffb5e6a73 Suppress a -Wliteral-range warning on Apple M1 (#2861) 5d804ee7f Fix handling of subnormals in exotic FP 86e27ccb4 Suppress a warning 192f79aaa Fix handling of locale separators in FP formatting 395cf0f03 Fix detection of unformattable pointers fc429d18b Avoid overhead on sensible platforms ce7ecdb7a Replace conditional compilation with SFINAE 8751a03a0 Fix Unicode handling when writing to an ostream c55175a58 Add an issue template a935ac3e6 MSVC CMake generation optimization (#2852) 22d31b31f Add a __float128 test f607e3e97 Add __float128 support 686de5888 Implement 128-bit constant mul in bigint 02eb215f2 Replace uint128_wrapper with uint128_fallback b4dc7a1d3 Add 128-bit operations to bigint ef54f9aa3 Suppress -Wfloat-equal 288c3b928 Remove dead code in ostream.h format_value 96930161f Implement 128-bit operator+= for uint128_fallback b41890c1e Make arg_mapper SFINAE-friendly again e2408f37c Check if formatter is not defined if there is format_as db5b8993a Fix formatting of std::byte via format_as 1c83eaf75 Fix incompatible between Jinja2 >= 3.1 and sphinx 3.3.0 5379063b5 Fixed clang -Wreserved-identifier warings b591fc87d Fixed all clang -Wreserved-id-macro warnings (on macOS at least) 17dda5839 constexpr -> const for portability 7ffe87c0b Fix docs 3c4273dd0 Simplify UDL 36d95c9fc Fix docs 44abd1f48 Update signatures in docs and ostream.h db745986f Workaround broken std::numeric_limits 8271e43e5 Improve __float128 support and use constexpr 3f9b7433a Improve __float128 support 71778e8b9 Specialize float_info for __float128 f024565c3 Improve exponent handling in Dragon e7f31f5cd Cleanup format_dragon 3c61799fb Cleanup fuzzing mode 4e39e1308 Remove xchar.h include from ostream.h ac0d9d5fe Issue #2816: also strip named-arg for the fallback formatter 4ad90578f Fix #2818: diagnose unformattable arguments in unpacked case 17ba99c1d Fix #2817: add compile-time checking to ostream overloads of fmt::print 3d19be282 Fix #2816: strip named argument wrappers for compile-time checking c076a54a4 Move snprintf_float to format.h 0419d2388 Add FMT_USE_FLOAT128 69396347a Update color.h (#2815) c51604a0e Reduce the number of configs 587dc9946 Remove windows-2016 env no longer suppported by GA 1f3d44b85 Update std::tm/chrono docs bc654faf8 Add is_floating_point that works with __float128 26bffce66 Simplify basic_memory_buffer ed18ca3ea Implement isnan a204b8dde Add initial __float128 support b6b003b07 Cleanup test f2543b0a9 Add initial support for 128-bit floats 72f487562 Simplify float_info f91f61cd1 Reuse num_significand_bits 9a1beab57 Workaround Windows API garbage a8fe8becf Fix compilation error for ranges with ADL `begin`/`end` (#2807) f6bcb25e1 Remove extra dot b4a4189d0 Fix handling of implicit bit 32d477e5f Add `styled` in documentation (#2805) 0b7c045a2 Simplify _cf c10fffecd Make _cf visible in the doc build dcfbe4a77 Document output_file default behavior correctly (#2803) 8c9bc070f Implement styled arguments (#2793) 5bc39d363 Eliminate intel compiler warnings (#2802) e3d688e79 Fix warning C4251: class fmt::v8::file needs to have dll-interface (#2797) 8d4f3e91b Update docs 0cef1f819 Fixing formatting of certain kinds of ranges of ranges. (#2787) 5c0d65640 Fix apt install d416a995e Update README.rst 3f67a1247 Update README.rst cc57e3597 Update godbolt link in the readme (#2789) 86477f7ec Fix size computation 0742606f1 Fix Conversion Warning (#2782) 1ba69fb5a Remove snprintf FP fallback ea6f0bf0e Minor cleanup 1a18a2f3d Fixing "C4127: conditional expression is constant" Visual Studio 2022 warning in pedantic mode (#2783) 4fcacea35 Parameterized fp on significand type cf940ae82 Simplify to_decimal 70dc3de05 Update format.h cbc59ca89 Clear moved from memory buffer ea3d326c6 Fix clang -Wliteral-range warning (#2779) aad44f283 Add fmt::enums::format_as 1319719a5 Add underlying_t af5d8004f Limit Dragonbox to supported FP formats 7b9642096 Remove unused include a0b43bfae Add support for 96-bit long double 2c8cd2db3 Fix handling of zero precision b6d56170f Remove unnecessary inline 05432e570 Use consistent indentation 47da218cc Remove uintptr_fallback 4ddab8901 Merge accumulator into int128_fallback d38f72aff Refactor fallback ints 15c2a3bac int128_t -> int128_opt 532a69a63 Fix handling of 96-bit long double with -m32 d8e1dd4ab improve installing headers ae25f7968 add ability to build Apple framework using CMAKE_FRAMEWORK ce93a66df Implement a fallback uint128_t 6a1346405 Include 128-bit with other signed integers in specifier check 70de324aa Apply 2746 fix for NVidia compiler also (#2770) a1ea3e015 Move built-in formatter specialization to core 161059dd9 Add support for extended precision FP c4c6b42de Bump version 21785040c Fix markup 2b6f7fc7a Add partial support for extended precision FP 0a24a0714 Clz builtin may be not constexpr (Issue #2761) (#2762) ba6f89c76 Update .bazelversion (#2766) 5594edaf6 Address https://github.com/fmtlib/fmt/issues/2763 (#2765) 10e3b83a7 Replace ``make_args_checked`` with ``make_format_args`` (#2760) c48353cb7 Update docs 083510f0f Add FMT_CONSTEXPR to rotr instead dba99bc86 Revert adding constexpr to rotr to satisfy C++11 compilers c04af4bfc Simplify remove_trailing_zeros b348caa9e Remove some C-style casts for consistency c8bd1e646 Simplify remove_trailing_zeros 9b23e9dcb Fix wrong comment/refer to a correct reference 69f2c550a Remove std:: infront of uint32_t/64_t & add constexpr to rotr 9b62310f0 Fix some conversion issues 08d12f31d Fix typo dbddb1d06 Remove literal separator to satisfy some compilers 7dbe3dcde Recover log10_2_significand 10642e608 Optimize remove_trailing_zeros 7b4323e1e Add rotr f1bd6f773 Check r < deltai first, because that is the major branch chosen for short inputs 5d8eb6a1a Reflect the new paper - Change constants appearing in log & division computations - Rename beta_minus_1 to beta 8e2e4d403 Suppress a gcc warning a44716f58 Workaround to Intel compiler (#2758) c71b07016 Add missing const qualifier (#2755) ecd6022c2 Update docs afbcf1e8e Remove legacy C locale wrapper 90325d097 Fix stored type detection e2ba01fcb Fix overload ambiguity in print 17b362f78 Simplify ostream opt-in API a5a7e3a26 Update docs f055ebbd2 Make ostream operators opt in to reduce the risk of ODR violations 8a21e328b Remove problematic constructibility check 31e743d06 Don't use ostream for types convertible to string_view 35c0286cd Simplify byte handling c7173a36a Drop :: and fix formatting 3e8372b96 qualify unqualified calls to format in compile.h (#2742) a34a97cc1 Supporting ? as a string presentation type (#2674) ae1aaaee5 Fix access mode of files created (#2530) (#2733) 1557ab764 Add format_as for enums b00a1eac7 Fixes NVIDIA HPC compiler and Intel ICC compatibility (#2732) a7aecbfca Remove an old mingw workaround dfcc730cb Making target_compile_options PRIVATE, fix #2726, fix #2507 f7a809be6 Clarify the choice of magic numbers and compute the most magic one 09fde7f4b Add fmt::underlying for enum classes 0014024a2 Don't rely on transitive includes c28500556 FMT_NOEXCEPT -> noexcept 6240d0201 Improve comments 925b744ae Improve comments 22b14ff25 Simplify cache recovery 3dc26b44d Make a fallback path more compiler-friendly 2e4038bf5 Simplify lines with __builtin_addcll and friends 76336b4f6 Replace noexcept with FMT_NOEXCEPT 918198348 Fix syntax errors 74097a149 Remove now-unused stuffs 21a1c5338 Fix typo 04eea0f0a Remove now-unused stuffs 35a468ed3 Simplify integer checks 1882a7a2c Replace Dragonbox cache which allows simpler cache recovery & integer checks f4dd1b1b8 Simplify Dragonbox Step 3. 70561ed13 Minimize the usage of built-in 128-bit ints It usually generates slower code than manual handling. cdf1a3b53 Fix codecvt warning (#2408) (#2725) b8b037e93 Fix -Wconversion warning (#2724) 5985f0a7d Fix overflow for chrono durations (#2722) 8f8a1a02d Fix handling of formattable types implicitly convertible to pointers b02e5af52 fmt::join support FMT_COMPILE (#2720) 58fb78239 Improve docs 4fe6129d6 Fix FMT_NOEXCEPT definition c056a009d Docs: Fix link to "Compile-time Format String Checks" section (#2712) 7c12118c1 Deprecate buffered_file::fileno 2a09d468d Use noexcept unconditionally a126b4d88 Check if right shift is arithmetic 9ff91b18c Simplify write_fractional_seconds d9f045fba Fix a UB in chrono c06bef727 Adding comments for range formatting. (#2706) 3c98f1a4c Comment style 6e0f1399d Supporting nested format specs for ranges. (#2673) 0102101ac Make colored print handle UTF-8 (#2701) 4ac5269b4 Update ChangeLog.rst git-subtree-dir: externals/fmt git-subtree-split: c4ee726532178e556d923372f29163bd206d7732
2022-07-26 10:51:24 +01:00
__cpp_constexpr_dynamic_alloc >= 201907 && FMT_CPLUSPLUS >= 202002L
Squashed 'externals/fmt/' changes from 9e8b86fd2..b6f4ceaed b6f4ceaed Update version 15f812dae Update changelog 6884aab49 Update changelog 88ec4e706 Bump version dd3d2490e Update changelog 739055ae7 Fix apidocs dbbd711f4 Suppress a warning 98cbb6a43 Fix ABI compatiblity issue 214cf13f1 Fix endianness bug in write_digit2_separated (#2699) 17a5c808d Restore FMT_API on error_handler::on_error() (#2696) fc1783fcc Avoid undefined symbols with mingw-w64 (#2692) 1b193e7b3 Deprecate more 8e59744b8 Switch to new github auth mechanism 7081a6aa3 Update version 64dc8fbad Bump version fc8e3de7d Fix manage.py script 57bee9fcd Fix formating dce52e491 Update changelog 9405a4724 Update changelog 495b8bf12 Update changelog e221166fa Update changelog 035cab8da Update changelog 89c6ed12b Clarify in comments (for now) deprecated map functions e462da828 Add some noexcept (#2684) 79c66d66b Update changelog 5d37f705f Update changelog 6bb370cec Update changelog bb6920157 Fix tuple join 4fac7daae Cleanup bit_cast 3617c2795 Update changelog 9c0c1bcdb Simplify tuple formatting 187e8db1b Update changelog c7f88180f add tests for format string compile-time checks 8a2c3fb88 add reverse tests to compile-error-test 1164eda5a disable compile-error-test on Windows 4482f6f1f rewrite compile-error-test to use non-header-only library 796662a61 Escape range items convertible to std::string_view 33ee4cc51 Improve noexception test 3bbf2c673 Fix throw with exceptions disabled 074c9c52e Update changelog 3110ec5a2 Update changelog 3014b3d77 Clarify that C strings must be null-terminated eab2ea9fc Replace an assert with an exception 21ed92a6e Update changelog 04111dd1e Fix issue #2670 (#2671) 817788fbf remove incorrect C++20 check from test/CMakeLists.txt (#2663) 4511030af Minor code style tweaks for consistency 7812813a3 Don't explicitly delete copy ctor of dynamic_format_arg_store (#2664) 664cd6067 Remove std-format-test 784e2a7b4 Fix an overflow when formatting very large durations fc2a376d8 Remove two expressions which had no effect (reported by LGTM) c5aafd8f9 expose headers as SYSTEM depending on special configuration option eaddd1e3c Fix handling of byte 2d4457758 Try fixing byte regression e46392ea2 deprecate _format UDL in code using FMT_DEPRECATED c882790a2 Add a set formatter 121002d70 Add a map formatter be51ee1ce Disable broken copy ctor of dynamic_format_arg_store 659de779e Fix a UB in parse_format_specs when begin is null 51b14b6c0 remove commented out lines 223a0fa55 move gtest-specific check into gtest/CMakeLists.txt ef72b471f enable named arguments check in compile-time checks (#2649) 82246b876 fix throw with exceptions disabled (#2647) 35f60377a Update ChangeLog.rst 3a951a66c Avoid qualifying by inline namespace. Fixes #2642. (#2643) e0136fc8b Qualify calls to make_wformat_args. Fixes #2639. (#2641) ac1b5f3da Refactor problematic trailing returns in arg_mapper fd62fba98 Don't convert scoped enums to integers c652f8243 Make header guard consistent with header name a9c7b9b8f Clarify that _format is deprecated e4f0564aa Disable is_streamable for string[_view] 91533d3c3 Minor tweaks to chrono subsecond formatting 0bbc9708f Implement c++20 std::chrono::duration subsecond formatting (#2623) 9d5b9defd Enable tzset only on Windows desktop app (#2633) 215f21a03 Detect overflow on large precision c240d98ff Optimize tm formatting (Non C-locales and %Z) (#2617) 6ab73113f Mark grow as FMT_CONSTEXPR20 (#2630) 713c7c7c6 Cleanup os.cc 9b1807a8a fix int -> uint warning (#2611) ec3b097cb [doc] FMT_STRING supports C++14 and no-op in C++11 (#2620) c472a2781 Fix handling of very large precision in fixed format 201971e29 Make MSVC use [[nodiscard]] (#2615) acad8cfab Reformat all source code; no functional changes 491ba2dda Annotate fmt::format and fmt::formatted_size as [[nodiscard]] 5abe9e826 Add platform-specific 'z' formatter be3a3a5ae Use predefined formats for C-locale a3ab36c80 Formatting of function pointers, member function pointers, member object pointers... (#2610) 19cac63fe Broken link in README.rst 43419a4ad Workaround a bug in gcc c089f7d49 Simplify std::tm formatter aa5517f6b Reuse tm_writer in chrono_formatter 50140be7a Reuse tm_writer in weekday formatter 8b8945499 Improve consistency 5380ff4d8 Detect types convertible to unformattable pointers 094b66e81 changed locale retrieval way to a fancy one b69ae4854 Reorder classes (#2591) 0b843af56 sped up chrono.h formatting for cases without providing locale (#2576) 12b1d8b14 Fix precision 0 with std::chrono::duration and added additional tests. (#2588) e67f92c55 Cleanup warnings with nvhpc/21.9. (#2582) 812733cc9 const qualify format function for systen_clock 028f22775 Handle implicit conversions in write 5b0aa638c Minor grammar fix 6eaceb5f7 Fix incompatible between docutils 1.18.0 and sphinx 3.3.0 (#2575) 0697c5edb FMT_USE_FCNTL can be predefined (#2573) 1031eedf2 Replacing strftime with std::time_put (#2550) 90034e4c4 Add FMT_ASSERT and validation of values of struct tm members (#2564) df40e9467 Upgrade `module-test` to msvc 16.11.5 and 17.0-pre5 (#2558) e6d5059cb Simplify js tag in basic-bootstrap theme (#2562) 3b6e409cd Enable `consteval` for msvc 17.0-pre5 (#2559) 249f03bbb do not detect LLVM based IBMXL compiler (on ppc) as clang (#2555) 7463c8320 Fix overflow for very bigger years (>2*10^9) (#2551) 1266c2b60 Fix handling of exotic character types 684e2fdc9 Minor cleanup a1d586302 Minor cleanup 7a604cdd9 Cleanup aeb54b0dd Fix bug on '%Y' and '%C' formats with negative years Requested changes f88c020fc Generalization of strftime/wcsftime function calls in tests 2eeddba75 Renaming, splitting of functions 275454608 Fix errors in ISO week-base-year formatter 218cecb6d Fix error in test e9f4453b0 Fix Microsoft Visual Studio 14.0 build 27c3674ce Improve performance 5dc3dd3d4 New tests f8542cd98 Unified formatters for std::chrono::time_point<std::chrono::system_clock, Duration> and std::tm 4707373d3 Fix year formatter 79c00ad8f Improve ISO week-base-year formatter fbaaa5906 Improve week of the year formatter cde44ddb7 Improve year formatter b04601b91 Switch from std::strftime/std::wcsftime to internal implementation for locale independent formats d3d30a46f New tests 7911d8d3f Add format spec checker fbbfc3b03 Reorder formatters 509eac957 Workarounds for implementation-defined std::strftime behavior 85b38190d New tests for all C++11 std::strftime format specifiers 7aca36bca Extending fmt::join to support C++20-only ranges. (#2549) f5371a75f locale.h -> format.h febdef43f fix: add workaround for intel parameter pack bug f56756986 fix: check to make sure both 'if constexpr' and return type deduction are available dcd282bb2 Namespace qualify calls to get 9c14474d3 Include `<bit>` when using `std::bit_cast` 1e96e0176 Fix compiler flag check (#2540) 7e4bc9451 Speeding up write_significand() (#2499) 26c1ca4c3 Replaced default spec with equivalent one, which is potentially more optimizable (#2537) 1e865b353 Fix docs 4a85db1ce Change default open mode to -rw-r--r-- (#2530) 0a985fd4c Move size_ initialization to initializer list (#2529) 012cc709d Workaround gcc _Pragma bug 59884 d6590e3bd Fix compiler check 134aec40f Fix search in docs 48a476ae0 Update example (#2522) 023c2018f Don't use strlen in constexpr 800d4c8ac Refactor Windows workarounds 32865aeaa changed detection of Intel Compiler Classic to distinguish MS-Windows (#2510) 7b339795a Describe a better approach of how to use {fmt} as a depency in a Bazel project (#2516) ae9bbe116 Suppress warning C4127 in chrono.h (conditional expression is constant) (#2518) 927dbd134 Misplaced comma in README.rst (#2515) 2a9a77dd8 Remove misplaced comment 1aee4bc90 Refactor FP formatting e1bd6cc91 Refactor FP formatting 027fcaf05 Replace use_grisu with fallback since Grisu is only one of multiple implemented algorithms 716d69f27 Refactor FP formatting ff7e73af6 Always run grisu_gen_digits before fallback_format 2976e31ac Refactor format_float 807ee5ec3 Disable consteval in Apple clang d9a731d48 Add basic support for Bazel (#2505) 9c57357e0 Add `static` to a table (#2509) 2742611ca Fix formatting 5092b198b Document group_digits b4d9d82e1 make FP formatting available to be used at compile-time (#2426) d9fd695ac Fix wchar_t tm formatting 92614ecbf Optimize %T in tm formatting aaeca12d8 Move FMT_MAYBE_UNUSED to format.h where it is used 3d0c7ae38 Move data to format.cc 04e3a79f7 Use memcpy in more cases in copy2 e47e99bb0 Simplify format_decimal (#2498) 9b6b0e403 Remove data 4d1c6034e Deprecate basic_data a3348eccd Deprecate most of basic_data 3a0448148 Remove data::hex_digits ad77331c0 Move log10_2_significand to format-inl.h d9ebc4e82 Add a function to get sign char c00eb4f4c Add missing inline 25af02f21 positive -> nonnegative (#2493) 67cb2dad3 Optimize %F in tm formatting 1aa98f8b9 Eliminate double copying in vformat_to_n (#2489) a58c13382 Improve code_point_length codegen on older gcc aeee70a81 Remove unnecessary cast c771ba361 Fix build for the clang-10 / libstdc++-9 couple (#2491) ab6e2272c Clarify shifts encoding e4728409e Use throw_format_error in more places to reduce bloat e3ebf366a Inline padding shifts 894faf3fe Refactor presentation types 4eb97fa4e Reduce code bloat 6b55c8325 is_const_formattable -> has_const_formatter 2fe94ad7e Make specifiers support in tuple_join an opt-in 3940de595 thousands -> group_digits c4d0f96a6 Implement format specs in fmt::thousands 3b9c44268 Implement thousands separators without locales 08f98c7fa Simplify get_arg_index_by_name a151f955a Remove FMT_OVERRIDE 42a225cbd Remove redundand final bf20d1990 Simplify the core API fc0884037 Move FMT_GCC_VISIBILITY_HIDDEN to format.h 1aeed2dbc Require inline namespaces 799bea473 Remove FMT_HAS_GXX_CXX11 60cd5ea3f Add support for more formattable types in ranges 4fd9a00f3 Simplify ostream interface 568156389 Cleanup ostream interface 20931baf1 Disable fallback_formatter for arrays d58d19ba3 Fix an odr violation in ranges.h (#2483) ee0659f8b Fix formatting of abstract classes via ostream 8029bf955 Fix copy_str performance (#2477) 2520f410c Workaround for #2478 (#2482) ee63f5f04 Workaround to MSVC bug (#2474) (#2476) 1aaf72fb6 Add an example to fmt::runtime c1313c205 Clarify that format_to[_n] do not append a terminating null cb0f177c3 Improve docs 71677e520 Improve docs 4db572352 add fuzzers for chrono timepoint and localtime,gmtime (#2469) dc7f3ef2b Fix header name 419ba86a9 Improve docs 6a5b4d5fa Document format_string 2599163b8 Document format_string 8ef22f774 Update docs c0c4d1ada Update docs 729a44e67 Depreate strtod and remove problematic tests 74c111896 Apply force inline 596508a92 Cleanup 043e3b342 Remove static_assert from arg_mapper 8b0cb944d Fix error reporting when mixing character types 117fc6707 CI: replace g++ C++20 build to test FP formatting at compile-time c79a3841e make detail::fp and detail::bigit constexpr 5888de9f3 make detail::make_checked() constexpr 04b4b69b1 make detail::bit_cast() constexpr with C++20 fd34a3d24 make detail::basic_memory_buffer constexpr with C++20 6d597e39c Fix overload ambiguity in arg_mapper b9ce56d93 Improve comments f889e52a1 Improve error reporting 34caecd6b Use consistent initialization style a44c8f651 reimplement `formatter<tuple_join_view>` (#2457) 4b8bda25c Fix 2462 6b5e6119e set clang in one place 7af1dc1d2 fix UB in fuzzer common (memcpy on nullptr) e77686f7a clang format 2207ea0b3 More escaping a212ff757 Escape invalid code points a76031e11 check -> is_printable a7f280765 Improve naming 07d033ecb Fix is_printable cdb4299ac Add Unicode support to is_printable 7df2c82a8 Rewrite printable.py codegen to emit C++ 6cf90d7ce Add script license and fix python version 2f1ad8ed3 Add printable codegen from Rust 371d8e2ee Escape Unicode 6397095ca More escaping f69a57253 Don't overescape wide strings 11b07a56b We should escape b559cfd4c Implement basic escaping 11d49491c Handle global locale 6ea6cf946 Add decimal separator support to float 9730a2af0 Update ChangeLog.rst c2ed5f686 Update ChangeLog.rst 7b66e72e2 Use builtin intrinsics on intel (#2450) d57b2a652 Suppress a warning bdfbd794e Cleanup begin/end usage 111de881f Don't copy non-const-iterable ranges d6e882ed8 Undo the move because the doc is not a GH template f488eed10 Resolve default constructor error in Xcode 7.2.1 and 8.2.1 652c3653b Move CONTRIBUTING.md to .github fb19faa31 Improves README with svg badge (#2446) 07211701f Disable the -Wstringop-overflow warning from GCC 7 (#2442) bba0a9d96 Make flush public f1794a885 Switch to threadsafe death test style 0544a2279 Exclude fallback functions when FMT_BUILTIN_CLZ(LL) is not defined (#2434) 5c222f056 Add support for nonconst formattable types 3def950b8 Set FMT_CAN_MODULE=OFF for MSVC 19.29.30035+ 63fe2d5bd Add copy constructor for dynamic_format_arg_store, and test 561834650 Improve digit count f20f50368 Replace `throw` with `FMT_THROW` (#2427) 00235d8a9 fix module test odr violations (#2414) 2038bf618 Update format_to usage e41ac1f87 Don't use deprecated API in docs 8465869d7 Move ignore_unused to detail 3d53d1539 Warning removals in test code (#2399) 20e4ef8b4 Pass significand_size by value c4a3c2342 Refactor locale handling 7a0d30175 Update README.rst f2b03facd Include test sources to pick up functions and classes from the module rather than from the non-modular library which is baked into the `test-main` library. (#2356) 02ad5e11d Add faint, blink, reverse and conceal to the emphases (#2394) d141cdbeb Update version cfc05e05f Bump version 8ea312633 Update changelog e461f3dbb Minor consitency and comment tweaks 54014e42e silence warning C4100 on MSVC 2019 when exceptions are disabled (#2397) 3e7a29cc9 Workaround clang/gcc incompatibility 00a57a9f8 Update changelog 1d7384530 Add missing presentation type checks for std::string (#2402) 889bbf27a Fix missing std::get overload in MSVC (#2407) 5f8473914 Remove outdated apidoc 785908ee3 Fix warnings fbb70eec5 suppress unused variable warnings (#2381) 002bb759f Remove unneeded `num_result_bigits` decrement a3f762c5a [doc] Minor: fix ``code``. c3c27e5ab Fix MSVC warning C4819 c6b1f181a Fix docs 94564b058 Fix docs 0fc73a2a8 Merge branch 'master' of github.com:fmtlib/fmt 3156fcf5f Switch to older breathe version f85fb9fdf Adjust definition for FMT_HAS_INCLUDE 0bc3d664e Fix docs e5c46e13e Fix docs: breathe 18 and earlier corrupts trailing return type 49a3b58c8 Specify size for static data arrays d0c8d45a2 apt update before install c9a10631c format: do not use udl_{arg,formatter} return types when UDL is not in use 3bd806f12 Eliminate intel compiler warning fd16bcb20 Fix bug in cmake join function 5221242f6 Instruct msvc to report the _true_ value in `__cplusplus` and force _full_ C++ conformance 31a5f0d39 Bump version in inline namespace 102a4d492 Bump version in inline namespace f68508b6c Update ChangeLog.rst git-subtree-dir: externals/fmt git-subtree-split: b6f4ceaed0a0a24ccf575fab6c56dd50ccf6f1a9
2022-02-15 11:15:34 +00:00
template <size_t max_string_length, typename Char = char> struct test_string {
template <typename T> constexpr bool operator==(const T& rhs) const noexcept {
return fmt::basic_string_view<Char>(rhs).compare(buffer) == 0;
}
Char buffer[max_string_length]{};
};
template <size_t max_string_length, typename Char = char, typename... Args>
consteval auto test_format(auto format, const Args&... args) {
test_string<max_string_length, Char> string{};
fmt::format_to(string.buffer, format, args...);
return string;
}
TEST(compile_time_formatting_test, floating_point) {
EXPECT_EQ("0", test_format<2>(FMT_COMPILE("{}"), 0.0f));
EXPECT_EQ("392.500000", test_format<11>(FMT_COMPILE("{0:f}"), 392.5f));
EXPECT_EQ("0", test_format<2>(FMT_COMPILE("{:}"), 0.0));
EXPECT_EQ("0.000000", test_format<9>(FMT_COMPILE("{:f}"), 0.0));
EXPECT_EQ("0", test_format<2>(FMT_COMPILE("{:g}"), 0.0));
EXPECT_EQ("392.65", test_format<7>(FMT_COMPILE("{:}"), 392.65));
EXPECT_EQ("392.65", test_format<7>(FMT_COMPILE("{:g}"), 392.65));
EXPECT_EQ("392.65", test_format<7>(FMT_COMPILE("{:G}"), 392.65));
EXPECT_EQ("4.9014e+06", test_format<11>(FMT_COMPILE("{:g}"), 4.9014e6));
EXPECT_EQ("-392.650000", test_format<12>(FMT_COMPILE("{:f}"), -392.65));
EXPECT_EQ("-392.650000", test_format<12>(FMT_COMPILE("{:F}"), -392.65));
EXPECT_EQ("3.926500e+02", test_format<13>(FMT_COMPILE("{0:e}"), 392.65));
EXPECT_EQ("3.926500E+02", test_format<13>(FMT_COMPILE("{0:E}"), 392.65));
EXPECT_EQ("+0000392.6", test_format<11>(FMT_COMPILE("{0:+010.4g}"), 392.65));
EXPECT_EQ("9223372036854775808.000000",
test_format<27>(FMT_COMPILE("{:f}"), 9223372036854775807.0));
constexpr double nan = std::numeric_limits<double>::quiet_NaN();
EXPECT_EQ("nan", test_format<4>(FMT_COMPILE("{}"), nan));
EXPECT_EQ("+nan", test_format<5>(FMT_COMPILE("{:+}"), nan));
if (std::signbit(-nan))
EXPECT_EQ("-nan", test_format<5>(FMT_COMPILE("{}"), -nan));
else
fmt::print("Warning: compiler doesn't handle negative NaN correctly");
constexpr double inf = std::numeric_limits<double>::infinity();
EXPECT_EQ("inf", test_format<4>(FMT_COMPILE("{}"), inf));
EXPECT_EQ("+inf", test_format<5>(FMT_COMPILE("{:+}"), inf));
EXPECT_EQ("-inf", test_format<5>(FMT_COMPILE("{}"), -inf));
}
#endif