fmt::dynamic_format_arg_store replacement/implementation 对于 std::format
fmt::dynamic_format_arg_store replacement/implementation for std::format
看起来 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
,其中 returns 是不同的类型。
是否可以为 std:format
实现 fmt:dynamic_format_arg_store
而无需了解每个编译器的具体实现细节?
您不能自己为 std::format
可移植地实现 fmt::dynamic_format_arg_store
的等价物,因为 std::basic_format_args
的表示是标准库的实现细节。它可能会在 C++ 标准的未来版本之一中提供。
看起来 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
,其中 returns 是不同的类型。
是否可以为 std:format
实现 fmt:dynamic_format_arg_store
而无需了解每个编译器的具体实现细节?
您不能自己为 std::format
可移植地实现 fmt::dynamic_format_arg_store
的等价物,因为 std::basic_format_args
的表示是标准库的实现细节。它可能会在 C++ 标准的未来版本之一中提供。