{fmt}:如果格式化字符串中不存在命名参数,是否会被忽略?

{fmt}: Will a named argument be ignored if it doesn't exist in the formatting string?

以下代码可以正常编译并生成字符串“abc”:

fmt::format("abc", fmt::arg("x", 42));

godbolt

因此格式字符串中缺少的命名参数似乎被忽略了。

我的问题是:这是设计使然还是错误

我问是因为我有这个“功能”的用例。所以我想确定这既不是 UB,也不是将来会被“修复”。

我已经浏览了 docs 但找不到这个用例。

这是设计使然。未使用的格式化参数本质上与任何其他函数的未使用参数相同,不是错误。 {fmt} 和 Python 的 str.format 以及 printf.

就是这种情况。