为什么 std::println(std::vector) 无法编译?

Jan*_*tke 23 c++ stdvector libc++ fmt c++23

我有以下代码:

#include <print>
#include <vector>

int main() {
    std::vector<int> v{1, 2, 3};
    std::println("{}", v);
}
Run Code Online (Sandbox Code Playgroud)

在这产生的众多错误中,有(clang++ -std=c++23 -stdlib=libc++https://godbolt.org/z/3z9Tseh37):

[...]/format_arg_store.h:167:17: error: static assertion failed due to [...]
  167 |   static_assert(__arg != __arg_t::__none, "the supplied type is not formattable");
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

这让我很困惑,因为根据cppreference C++23 编译器支持页面,libc++ 支持std::println并实现P2286: Formatting Ranges

我做错了什么还是这是标准库错误?

康桓瑋*_*康桓瑋 23

我做错了什么还是这是标准库错误?

格式范围被指定为支持<format>,但标准没有指定<print>必须包括<format>。(因此只需包含即可<format>使代码格式良好)。

然而,从用户友好的角度来看,包括<print>应该支持格式化范围。

已经有一个关于此的未决问题,请参阅71925