diff --git a/include/fmt/format.h b/include/fmt/format.h index 15ac5ac1..bac745b6 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -1806,11 +1806,9 @@ struct string_view_metadata { : offset_(view.data() - primary_string.data()), size_(view.size()) {} FMT_CONSTEXPR string_view_metadata(std::size_t offset, std::size_t size) : offset_(offset), size_(size) {} - template ::value, char_t>> - FMT_CONSTEXPR basic_string_view to_view(S&& str) const { - const auto view = to_string_view(str); - return basic_string_view(view.data() + offset_, size_); + template + FMT_CONSTEXPR basic_string_view to_view(const Char* str) const { + return {str + offset_, size_}; } std::size_t offset_; diff --git a/include/fmt/prepare.h b/include/fmt/prepare.h index a7078ef8..0ac92188 100644 --- a/include/fmt/prepare.h +++ b/include/fmt/prepare.h @@ -262,7 +262,7 @@ class prepared_format { switch (part.which) { case format_part_t::which_value::text: { - const auto text = value.text.to_view(format_view); + const auto text = value.text.to_view(format_view.data()); auto output = ctx.out(); auto&& it = internal::reserve(output, text.size()); it = std::copy_n(text.begin(), text.size(), it); @@ -276,16 +276,17 @@ class prepared_format { case format_part_t::which_value::named_argument_id: { advance_parse_context_to_specification(parse_ctx, part); - const auto named_arg_id = value.named_arg_id.to_view(format_view); + const auto named_arg_id = + value.named_arg_id.to_view(format_view.data()); format_arg(parse_ctx, ctx, named_arg_id); } break; case format_part_t::which_value::specification: { const auto& arg_id_value = value.spec.arg_id.val; - const auto arg = - value.spec.arg_id.which == - format_part_t::argument_id::which_arg_id::index - ? ctx.arg(arg_id_value.index) - : ctx.arg(arg_id_value.named_index.to_view(format_)); + const auto arg = value.spec.arg_id.which == + format_part_t::argument_id::which_arg_id::index + ? ctx.arg(arg_id_value.index) + : ctx.arg(arg_id_value.named_index.to_view( + to_string_view(format_).data())); auto specs = value.spec.parsed_specs;