Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

P2093R14: Formatted Output #3337

Merged
merged 112 commits into from
Mar 24, 2023
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
78e37c8
Merge pull request #22 from microsoft/main
tylerbrawl Jan 2, 2023
036e6b8
Began work on the <print> implementation.
tylerbrawl Jan 6, 2023
d0a3dd8
Finished the `<print>` header.
tylerbrawl Jan 6, 2023
94cc302
Sort of began work on the std::ostream overloads.
tylerbrawl Jan 7, 2023
9fd9113
Finished the `std::ostream&` overloads of `std::print()` et al..
tylerbrawl Jan 8, 2023
c2ba18f
Fixed the formatting in various files.
tylerbrawl Jan 8, 2023
e95d686
Renamed `<xfilebuf>` to `<xfilebuf.h>`.
tylerbrawl Jan 9, 2023
c8c3ca1
Fixed another formatting issue...
tylerbrawl Jan 9, 2023
9d7a8b6
I forgot to edit `header-units.json`. Oops.
tylerbrawl Jan 9, 2023
34d5bd4
Improved compiler throughput (see #2329).
tylerbrawl Jan 9, 2023
338fc79
Began work on developing test cases.
tylerbrawl Jan 9, 2023
1342193
Fixed a printing bug and renamed internal headers.
tylerbrawl Jan 10, 2023
2d90582
Worked around an MSVC bug with the ordinary literal encoding check.
tylerbrawl Jan 10, 2023
014da11
Corrected a comment regarding `_MSVC_EXECUTION_CHARACTER_SET`.
tylerbrawl Jan 10, 2023
814a683
Added a missing template parameter...
tylerbrawl Jan 10, 2023
36a8d4a
Applied changed from various code reviews.
tylerbrawl Jan 10, 2023
019ee48
Adjusted some type declarations for style conformance.
tylerbrawl Jan 10, 2023
077d6df
Merge branch 'print-base' into print-tests
tylerbrawl Jan 10, 2023
b6b35bd
Added some additional test cases.
tylerbrawl Jan 10, 2023
88a7d99
Removed some pointless formal parameters.
tylerbrawl Jan 10, 2023
65a6c1d
Merge branch 'print-base' into print-tests
tylerbrawl Jan 10, 2023
48c4368
Fixed an x86 build error.
tylerbrawl Jan 10, 2023
b9f165f
Merge branch 'print-base' into print-tests
tylerbrawl Jan 10, 2023
0b3064a
Added the `P2093R14` tests to `test.lst` and extended them.
tylerbrawl Jan 11, 2023
c4ac767
Finished implementing a test suite.
tylerbrawl Jan 11, 2023
4f5ea54
Merge pull request #24 from tylerbrawl/print-tests
tylerbrawl Jan 11, 2023
048f7a8
Fixed some incorrect header name comments.
tylerbrawl Jan 11, 2023
a3d303a
Removed a non-conforming optimization.
tylerbrawl Jan 11, 2023
7c5df2f
Applied a ClangFormat pass...
tylerbrawl Jan 11, 2023
64be155
Use `std::basic_string::resize_and_overwrite()` for string adjustments.
tylerbrawl Jan 11, 2023
e361392
Removed an unnecessary `#include`.
tylerbrawl Jan 11, 2023
c88bd32
Replaced `#ifdef` with `#if` to fix older builds...
tylerbrawl Jan 12, 2023
e8c71c8
Fixed a signed/unsigned mismatch error for x64.
tylerbrawl Jan 12, 2023
33bba64
Removed some inconsistent test cases.
tylerbrawl Jan 12, 2023
96fd8a8
Fixed even more failing test cases...
tylerbrawl Jan 12, 2023
30959c3
Added an emergency fix for an escaped brace bug.
tylerbrawl Jan 19, 2023
9dbd93e
Merge branch 'main' into print-base
tylerbrawl Jan 19, 2023
3764129
Marked a compiler bug as "TRANSITION."
tylerbrawl Jan 19, 2023
7e6d455
Resolved a merge conflict with `main`.
tylerbrawl Jan 27, 2023
4d0dcde
Moved the `print.cpp` functions into `msvcprt.lib`.
tylerbrawl Jan 27, 2023
b2bb82a
Added support for long string segmentation.
tylerbrawl Jan 28, 2023
c2c089d
Fixed some bugs in large string transcoding.
tylerbrawl Jan 28, 2023
f2bab39
Use `std::fwrite()` in `std::_Print_noformat_nonunicode()`.
tylerbrawl Jan 29, 2023
20636b3
Made `std::_Is_ordinary_literal_encoding_utf8` a function.
tylerbrawl Jan 29, 2023
8bcf5ec
Converted tabs to spaces in `stl.files.settings.targets`.
tylerbrawl Jan 29, 2023
472535f
Removed multiple immediately-invoked lambda expressions (IILEs).
tylerbrawl Jan 29, 2023
9bb8c51
Applied several remaining misc. fixes.
tylerbrawl Jan 29, 2023
acf68f9
Merged `main` into `print-base`.
tylerbrawl Jan 29, 2023
a021700
Merge branch 'print-code-changes' into print-base
tylerbrawl Jan 29, 2023
94f70c2
Accounted for `noexcept` strengthening in `std::basic_filebuf`.
tylerbrawl Jan 29, 2023
650f0f9
Drastically reduced binary size of `print.cpp`.
tylerbrawl Jan 29, 2023
38bd6e5
Fixed some haywire XML formatting...
tylerbrawl Jan 29, 2023
8c8add2
Added grapheme cluster handling for large strings.
tylerbrawl Jan 30, 2023
53cddd3
Simplified `std::_Is_ordinary_literal_encoding_utf8()`.
tylerbrawl Jan 30, 2023
3d36c8a
Reinstated UTF-8 code page ID comments.
tylerbrawl Jan 30, 2023
71cb74d
Yet another formatting error sneaks by...
tylerbrawl Jan 30, 2023
51a97f8
Corrected a comment in `_Get_next_utf8_string_segment()`.
tylerbrawl Jan 30, 2023
5e6b9a8
Replaced `[[nodiscard]]` with `_NODISCARD`.
tylerbrawl Jan 30, 2023
c4ee87a
Resolved a merge conflict with `<fstream>`.
tylerbrawl Feb 13, 2023
853d956
Updated `__msvc_filebuf.hpp` to account for upstream changes.
tylerbrawl Feb 13, 2023
0f5af85
Merge branch 'main' into print-base
StephanTLavavej Mar 9, 2023
7b97454
Drop unnecessary parens.
StephanTLavavej Mar 9, 2023
6719f41
Include `<limits>`.
StephanTLavavej Mar 9, 2023
24249d9
Test is already `using namespace std;`.
StephanTLavavej Mar 9, 2023
309c02b
Drop unnecessary braces.
StephanTLavavej Mar 9, 2023
0c8b4b2
Use `"en-US.UTF-8"` for consistency with other tests.
StephanTLavavej Mar 9, 2023
36cb870
Just copy `_Minimal_wstring_view`.
StephanTLavavej Mar 9, 2023
1171590
Add data member initializers to avoid garbage-init.
StephanTLavavej Mar 9, 2023
99e4e79
(no CR comment) Micro-throughput: Directly read data member.
StephanTLavavej Mar 9, 2023
4cbe483
Drop unnecessary top-level const.
StephanTLavavej Mar 9, 2023
04a56f6
Cleanup comments.
StephanTLavavej Mar 9, 2023
7b36025
Comment why `static_cast<int>(_Src_str._Size())` is OK.
StephanTLavavej Mar 9, 2023
0f717dc
Drop unnecessary (and problematic) forward declaration.
StephanTLavavej Mar 9, 2023
b240ecf
Fix stl/CMakeLists.txt: Depend on `msvcp_${SATELLITE_NAME}.src`.
StephanTLavavej Mar 9, 2023
376b925
stl/CMakeLists.txt: Rename to `satellite_input_src_file_path`.
StephanTLavavej Mar 9, 2023
7e8fc01
Store `sputn()`'s return value in a named variable.
StephanTLavavej Mar 9, 2023
b8eb8de
Use `_Throw_system_error()`.
StephanTLavavej Mar 9, 2023
d2bd25f
Explicitly store `__std_win_error::_Success` for success.
StephanTLavavej Mar 9, 2023
d4b5b9d
`_Allocated_string::_Data()` can be `const`.
StephanTLavavej Mar 9, 2023
4ffa6f7
Extract `_Escape_braces`.
StephanTLavavej Mar 9, 2023
e115b7e
Be NRVO friendly in `_Escape_braces`.
StephanTLavavej Mar 9, 2023
2098054
De Morgan the double brace condition.
StephanTLavavej Mar 9, 2023
1515378
Drop redundant `ios::in` and `ios::out`.
StephanTLavavej Mar 9, 2023
d3e5f5e
Directly initialize `ifstream`s.
StephanTLavavej Mar 9, 2023
dc5c9a4
REFACTOR: `<print>` doesn't need all of `<chrono>` and `<string>`.
StephanTLavavej Mar 9, 2023
18ca126
Call `_CSTD abort()`.
StephanTLavavej Mar 9, 2023
40ff427
Change `static constexpr` to `constexpr` in an unnamed namespace.
StephanTLavavej Mar 9, 2023
4395b92
Change `_In_` to `_In_reads_(_Str_size)`.
StephanTLavavej Mar 9, 2023
77a9e3d
Drop `__stdcall` within an unnamed namespace.
StephanTLavavej Mar 9, 2023
579ccbb
Copy tr1's temp_file_name.h as temp_file_name.hpp in std.
StephanTLavavej Mar 9, 2023
b9bb308
Use `temp_file_name()` to avoid collisions.
StephanTLavavej Mar 9, 2023
af5f8d2
MAJOR: Drop `_Critical_section`.
StephanTLavavej Mar 9, 2023
39ac81f
Simplify loop by undoing "without acquiring the lock" optimization.
StephanTLavavej Mar 9, 2023
7df5bbe
Record manual test coverage for segments.
StephanTLavavej Mar 9, 2023
697ae68
MAJOR: Use a child process with a hidden window to avoid flickering.
StephanTLavavej Mar 10, 2023
9051ffc
We need to close `hProcess` and `hThread`. (Thanks, `/analyze`.)
StephanTLavavej Mar 10, 2023
217b8d3
Merge branch 'main' into print-base
StephanTLavavej Mar 17, 2023
bebd583
Rename things, as we're unescaping `{{}}` to `{}`.
StephanTLavavej Mar 17, 2023
32bfb7e
Pass `_Add_newline` at runtime.
StephanTLavavej Mar 17, 2023
0a313b0
Extract duplicated code when adding a newline.
StephanTLavavej Mar 17, 2023
9a78d97
Consistently mark `_fileno` `-2` as unlikely, mention that it hasn't …
StephanTLavavej Mar 17, 2023
64ac84a
Revert extracting `<__msvc_unicode_iterators.hpp>` from `<format>`.
StephanTLavavej Mar 17, 2023
fdb3f91
Replace grapheme breaking with UTF-8 code point breaking.
StephanTLavavej Mar 18, 2023
e2ebd67
`WinSemaphore` => `win_semaphore`
StephanTLavavej Mar 22, 2023
592d140
Store `last_console_line` for easier debugging.
StephanTLavavej Mar 22, 2023
c4bb34a
Make `curr_line_number` non-static in `test_print_optimizations()`, m…
StephanTLavavej Mar 22, 2023
38ed9dd
Run tests before and after switching the console output codepage.
StephanTLavavej Mar 22, 2023
da8c19e
`test_invalid_code_points_console()` requires UTF-8 behavior.
StephanTLavavej Mar 22, 2023
9eaaa08
Add templates to fix internal objsize test.
StephanTLavavej Mar 23, 2023
f926994
Fix `println("")`.
StephanTLavavej Mar 23, 2023
d70f3b6
Consistently remove temp files.
StephanTLavavej Mar 23, 2023
bfb743e
Add `test_empty_strings_and_newlines()`.
StephanTLavavej Mar 23, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 48 additions & 13 deletions stl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ set(HEADERS
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_all_public_headers.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_chrono.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_cxx_stdatomic.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_filebuf.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_format_ucd_tables.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_int128.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_iter_core.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_print.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_sanitizer_annotate_container.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_system_error_abi.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_tzdb.hpp
Expand Down Expand Up @@ -178,6 +180,7 @@ set(HEADERS
${CMAKE_CURRENT_LIST_DIR}/inc/numeric
${CMAKE_CURRENT_LIST_DIR}/inc/optional
${CMAKE_CURRENT_LIST_DIR}/inc/ostream
${CMAKE_CURRENT_LIST_DIR}/inc/print
${CMAKE_CURRENT_LIST_DIR}/inc/queue
${CMAKE_CURRENT_LIST_DIR}/inc/random
${CMAKE_CURRENT_LIST_DIR}/inc/ranges
Expand Down Expand Up @@ -449,12 +452,17 @@ set(SOURCES_SATELLITE_CODECVT_IDS
${CMAKE_CURRENT_LIST_DIR}/src/ulocale.cpp
)

set(SOURCES_SATELLITE_PRINT
${CMAKE_CURRENT_LIST_DIR}/src/print.cpp
)
tylerbrawl marked this conversation as resolved.
Show resolved Hide resolved

# Objs that exist only in libcpmt[d][01].lib.
set(STATIC_SOURCES
${SOURCES_SATELLITE_1}
${SOURCES_SATELLITE_2}
${SOURCES_SATELLITE_ATOMIC_WAIT}
${SOURCES_SATELLITE_CODECVT_IDS}
${SOURCES_SATELLITE_PRINT}
)

# Objs that exist in all satellite DLLs
Expand Down Expand Up @@ -513,6 +521,24 @@ function(target_stl_compile_options tgt rel_or_dbg)
endif()
endfunction()

function(generate_satellite_def SATELLITE_NAME D_SUFFIX)
set(full_satellite_name "msvcp140${D_SUFFIX}_${SATELLITE_NAME}${VCLIBS_SUFFIX}")
string(TOUPPER "${full_satellite_name}" upper_full_satellite_name)
set(satellite_src_def_file_path "${CMAKE_CURRENT_LIST_DIR}/src/msvcp_${SATELLITE_NAME}.src")
set(satellite_output_def_file_path "${CMAKE_BINARY_DIR}/msvcp_${SATELLITE_NAME}${D_SUFFIX}.def")
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${satellite_output_def_file_path}")
StephanTLavavej marked this conversation as resolved.
Show resolved Hide resolved

# We use the placeholder name "LIBRARYNAME" in the corresponding .src file of a satellite DLL
# (i.e., we write "LIBRARY LIBRARYNAME" as the first non-commented line in the file).
#
# Here, we dynamically replace this placeholder name with the name of the satellite DLL for
# the current build configuration. Then, we write out the new .def file to the binary output
# directory.
file(READ "${satellite_src_def_file_path}" satellite_def_file_contents)
string(REPLACE "LIBRARYNAME" "${upper_full_satellite_name}" satellite_def_file_contents "${satellite_def_file_contents}")
file(GENERATE OUTPUT "${satellite_output_def_file_path}" CONTENT "${satellite_def_file_contents}")
endfunction()

function(add_stl_dlls D_SUFFIX REL_OR_DBG)
set(link_options_Release "/LTCG;/opt:ref,icf")
set(link_options_Debug "/opt:ref,noicf")
Expand Down Expand Up @@ -588,20 +614,13 @@ function(add_stl_dlls D_SUFFIX REL_OR_DBG)
target_stl_compile_options(msvcp${D_SUFFIX}_atomic_wait_objects ${REL_OR_DBG})

# generate the .def for msvcp140_atomic_wait.dll
set(_ATOMIC_WAIT_OUTPUT_NAME "msvcp140${D_SUFFIX}_atomic_wait${VCLIBS_SUFFIX}")
string(TOUPPER "${_ATOMIC_WAIT_OUTPUT_NAME}" _ATOMIC_WAIT_OUTPUT_NAME_UPPER)
set(_ATOMIC_WAIT_DEF_NAME "${CMAKE_BINARY_DIR}/msvcp_atomic_wait${D_SUFFIX}.def")
set(_ATOMIC_WAIT_DEF_FILE_SRC "${CMAKE_CURRENT_LIST_DIR}/src/msvcp_atomic_wait.src")
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${_ATOMIC_WAIT_DEF_FILE_SRC}")
file(READ "${_ATOMIC_WAIT_DEF_FILE_SRC}" _ATOMIC_WAIT_SRC_CONTENTS)
string(REPLACE "LIBRARYNAME" "${_ATOMIC_WAIT_OUTPUT_NAME_UPPER}" _ATOMIC_WAIT_DEF_CONTENTS "${_ATOMIC_WAIT_SRC_CONTENTS}")
file(GENERATE OUTPUT "${_ATOMIC_WAIT_DEF_NAME}" CONTENT "${_ATOMIC_WAIT_DEF_CONTENTS}")

add_library(msvcp${D_SUFFIX}_atomic_wait SHARED "${_ATOMIC_WAIT_DEF_NAME}")
generate_satellite_def("atomic_wait" "${D_SUFFIX}")

add_library(msvcp${D_SUFFIX}_atomic_wait SHARED "${CMAKE_BINARY_DIR}/msvcp_atomic_wait${D_SUFFIX}.def")
target_link_libraries(msvcp${D_SUFFIX}_atomic_wait PRIVATE msvcp${D_SUFFIX}_atomic_wait_objects msvcp${D_SUFFIX}_satellite_objects msvcp${D_SUFFIX}_implib_objects "msvcp${D_SUFFIX}" "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib" "advapi32.lib")
set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES ARCHIVE_OUTPUT_NAME "msvcp140_atomic_wait${D_SUFFIX}${VCLIBS_SUFFIX}")
set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES OUTPUT_NAME "${_ATOMIC_WAIT_OUTPUT_NAME}")
set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES OUTPUT_NAME "msvcp140${D_SUFFIX}_atomic_wait${VCLIBS_SUFFIX}")
target_link_options(msvcp${D_SUFFIX}_atomic_wait PRIVATE ${link_options_${REL_OR_DBG}})

# msvcp140_codecvt_ids.dll
Expand All @@ -617,11 +636,27 @@ function(add_stl_dlls D_SUFFIX REL_OR_DBG)
set_target_properties(msvcp${D_SUFFIX}_codecvt_ids PROPERTIES OUTPUT_NAME "msvcp140${D_SUFFIX}_codecvt_ids${VCLIBS_SUFFIX}")
target_link_options(msvcp${D_SUFFIX}_codecvt_ids PRIVATE ${link_options_${REL_OR_DBG}})

# msvcp140_print.dll (the print satellite)
add_library(msvcp${D_SUFFIX}_print_objects OBJECT ${SOURCES_SATELLITE_PRINT})
target_compile_definitions(msvcp${D_SUFFIX}_print_objects PRIVATE _BUILDING_SATELLITE_PRINT _DLL)
target_compile_options(msvcp${D_SUFFIX}_print_objects PRIVATE ${gl_flag_${REL_OR_DBG}} /EHsc)
target_stl_compile_options(msvcp${D_SUFFIX}_print_objects ${REL_OR_DBG})

# generate the .def file for msvcp140_print.dll
generate_satellite_def("print" "${D_SUFFIX}")

add_library(msvcp${D_SUFFIX}_print SHARED "${CMAKE_BINARY_DIR}/msvcp_print${D_SUFFIX}.def")
target_link_libraries(msvcp${D_SUFFIX}_print PRIVATE msvcp${D_SUFFIX}_print_objects msvcp${D_SUFFIX}_satellite_objects "msvcp${D_SUFFIX}" "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib")
set_target_properties(msvcp${D_SUFFIX}_print PROPERTIES ARCHIVE_OUTPUT_NAME "msvcp140_print${D_SUFFIX}${VCLIBS_SUFFIX}")
set_target_properties(msvcp${D_SUFFIX}_print PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
set_target_properties(msvcp${D_SUFFIX}_print PROPERTIES OUTPUT_NAME "msvcp140${D_SUFFIX}_print${VCLIBS_SUFFIX}")
target_link_options(msvcp${D_SUFFIX}_print PRIVATE ${link_options_${REL_OR_DBG}})

# import library
add_library(msvcp${D_SUFFIX}_implib STATIC ${HEADERS})
target_link_libraries(msvcp${D_SUFFIX}_implib stl_alias_objects msvcp${D_SUFFIX}_implib_objects)
add_dependencies(msvcp${D_SUFFIX}_implib msvcp${D_SUFFIX} msvcp_1${D_SUFFIX} msvcp_2${D_SUFFIX} msvcp${D_SUFFIX}_atomic_wait msvcp${D_SUFFIX}_codecvt_ids)
set_target_properties(msvcp${D_SUFFIX}_implib PROPERTIES STATIC_LIBRARY_OPTIONS "/NOLOGO;/NODEFAULTLIB;/IGNORE:4006;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp_1${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp_2${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}_codecvt_ids>;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}_atomic_wait>")
add_dependencies(msvcp${D_SUFFIX}_implib msvcp${D_SUFFIX} msvcp_1${D_SUFFIX} msvcp_2${D_SUFFIX} msvcp${D_SUFFIX}_atomic_wait msvcp${D_SUFFIX}_codecvt_ids msvcp${D_SUFFIX}_print)
set_target_properties(msvcp${D_SUFFIX}_implib PROPERTIES STATIC_LIBRARY_OPTIONS "/NOLOGO;/NODEFAULTLIB;/IGNORE:4006;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp_1${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp_2${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}_codecvt_ids>;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}_atomic_wait>;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}_print>")
set_target_properties(msvcp${D_SUFFIX}_implib PROPERTIES ARCHIVE_OUTPUT_NAME "msvcprt${D_SUFFIX}")
endfunction()

Expand Down
1 change: 1 addition & 0 deletions stl/inc/__msvc_all_public_headers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@
#include <numeric>
#include <optional>
#include <ostream>
#include <print>
StephanTLavavej marked this conversation as resolved.
Show resolved Hide resolved
#include <queue>
#include <random>
#include <ranges>
Expand Down
Loading