Standard Library Modules: Add workaround for <format>
/utf-8
#3816
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Thanks to C++ MVP Marc Gregoire for reporting that
import std;
didn't allow<format>
machinery to work with/utf-8
.First, this adds test coverage to the Standard Library Modules test. We were already exercising the affected function, we just need to add a
/utf-8
configuration to light up the correspondingif constexpr
paths.Second, this adds a product code workaround. As @cdacamar noted, this is internal VSO-1538698 "Better handling for non-exported friend function declarations" again, where granting friendship to templated, non-module-
export
ed (i.e._Ugly
) functions doesn't work.I've audited the STL and I believe we're consistently applying the workaround now. We just need to remember that
friend
will trigger this compiler bug.