如果不支持,你知道哪个编译器或版本可以吗?
查看cppreference/format。
查看cppreference/format。
现在是2023年!干杯!
GCC 13、CLANG 14和MSVC 16.10/VS 2019都在各自的标准库中提供了基于{fmt}的std::format
。
希望很快就会有C++23的std::print
可用。
请参见编译器支持情况:
-stdlib=libc++
应该可以解决问题。至于GCC,你需要至少版本13。 - 0xB00Bformat
。对于想要查找编译器对其他库或功能的支持的人,请参考cppreference.com上的编译器支持链接。
gcc是否支持C++20的
std::format
?
还没有!
目前还没有编译器支持,甚至连gcc 11也没有。请参阅库特性中的文本格式化
。
std::format
的支持,但是:"该文件已经实现,但仍标记为不完整的特性。尚未实现的LWG问题将导致API和ABI的破坏" (链接)。-fexperimental-library
编译器标志启用此功能 (链接)。std::format
的实现被提及为完整。
-fexperimental-library
标志,它仍然无法编译,并抱怨找不到#include <print>
或#include <format>
。你能详细说明如何使其工作吗? - FalcoGer-stdlib=libc++
?这里有一个例子:https://godbolt.org/z/K5ee4b9r4 - Ihor Baklykov-fexperimental-library
只能与-stdlib=libc++
一起使用,因为据我所知,Clang默认使用的是GCC的stdlibc++,你必须手动指示它使用Clang的libc++。"如果我使用它,它会抱怨找不到iostream。" - 检查是否安装了libc++。 - Ihor Baklykov-L
将clang指向libc++experimental库解决了这个问题。对我来说,discord现在是一个flatpak应用程序。 - FalcoGerGCC 13 新增了 std::format 支持。根据 cppreference,从 GCC 13 开始,其 C++20 支持(包括核心语言和标准库)将不再存在缺陷。
这个 bugzilla ticket 指出一些 C++23 对 std::format 的扩展尚未实现。
GCC 13 预计将在 2023 年 4 月左右发布。
compiler explorer 上的 GCC trunk 安装包含 std::format 支持。
截至 2023 年 3 月 19 日,OpenSUSE Tumbleweed 和即将推出的 Fedora 38 均包括 GCC 13。