gpt4 book ai didi

c++ - fmt::dynamic_format_arg_store 替换/实现 std::format

转载 作者:行者123 更新时间:2023-12-04 14:46:55 24 4
gpt4 key购买 nike

看起来 c++20 std::format 不是 fmt 库的直接替代品。

查看 API ( https://en.cppreference.com/w/cpp/utility/format) 看起来 fmt::dynamic_format_arg_store 不是标准的一部分。

目前在fmt中可以有如下代码:

#include <fmt/format.h>
#include <fmt/args.h>

int main()
{
auto store = fmt::dynamic_format_arg_store<fmt::format_context>();
store.push_back(42);
store.push_back( std::string { "abc1"} );
store.push_back(1.5f);
fmt::vprint("{} this is my {}. This is a number: {}.", store);
}

我想用标准的 std::format 替换 fmt。

我快速查看了 fmt::dynamic_format_arg_store,它看起来像是使用了 fmt 的一些内部东西,所以它看起来并不那么直接。

任何人都可以提供一些指导,说明如何使用 std::format 在 fmt for C++20 之外实现上述功能?

编辑:

fmt:dynamic_format_arg_store 中看得更深一点,它看起来像是使用 detail:make_arg 来创建一个参数。

我不知道如何从 std::format 中得到等效的东西,因为我只看到返回不同类型的 std::make_format_args

是否可以为 std:format 实现 fmt:dynamic_format_arg_store 而无需了解每个编译器的具体实现细节?

最佳答案

您不能自己为 std::format 移植实现 fmt::dynamic_format_arg_store 的等价物,因为 std::basic_format_args 的表示是标准库的实现细节。它可能会在 C++ 标准的 future 版本之一中提供。

关于c++ - fmt::dynamic_format_arg_store 替换/实现 std::format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69857618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com