[libcxx-commits] [libcxx] [libc++] Add basic constant folding for std::format (PR #107197)
Nikolas Klauser via libcxx-commits
libcxx-commits at lists.llvm.org
Sun Feb 2 08:50:06 PST 2025
================
@@ -447,10 +449,41 @@ format_to(_OutIt __out_it, wformat_string<_Args...> __fmt, _Args&&... __args) {
}
# endif
+template <class _CharT>
+[[nodiscard]] _LIBCPP_HIDE_FROM_ABI optional<basic_string<_CharT>> __try_constant_folding_format(
+ basic_string_view<_CharT> __fmt,
+ basic_format_args<basic_format_context<back_insert_iterator<__format::__output_buffer<_CharT>>, _CharT>> __args) {
+ // [[gnu::pure]] is added to ensure that the compiler always knows that this call can be eliminated.
+ if (bool __is_identity =
+ [&] [[__gnu__::__pure__]] { return std::ranges::find_first_of(__fmt, array{'{', '}'}) == __fmt.end(); }();
----------------
philnik777 wrote:
Is there a reason for one over the other?
https://github.com/llvm/llvm-project/pull/107197
More information about the libcxx-commits
mailing list