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-8configuration to light up the correspondingif constexprpaths.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-
exported (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
friendwill trigger this compiler bug.