我有以下代码:
#include <print>
#include <vector>
int main() {
std::vector<int> v{1, 2, 3};
std::println("{}", v);
}
在这产生的众多错误中,有(
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");
| ^~~~~~~~~~~~~~~~~~~~~~~~
这让我很困惑,因为根据 cppreference C++23 编译器支持页面,libc++ 支持
std::println
并实现 P2286:格式化范围。
我做错了什么还是这是一个标准库错误?
我做错了什么还是这是一个标准库错误?
格式范围指定为包含在
<format>
中,但标准并未规定 <print>
必须包含 <format>
。
但是,从用户友好的角度来看,包括
<print>
应该支持格式化范围。
已经有一个关于此的未决问题,请参阅71925。