{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));
因此格式字符串中缺少的命名参数似乎被忽略了。
我的问题是:这是设计使然还是错误?
我问是因为我有这个“功能”的用例。所以我想确定这既不是 UB,也不是将来会被“修复”。
我已经浏览了 docs 但找不到这个用例。
这是设计使然。未使用的格式化参数本质上与任何其他函数的未使用参数相同,不是错误。 {fmt} 和 Python 的 str.format
以及 printf
.
就是这种情况。
以下代码可以正常编译并生成字符串“abc”:
fmt::format("abc", fmt::arg("x", 42));
因此格式字符串中缺少的命名参数似乎被忽略了。
我的问题是:这是设计使然还是错误?
我问是因为我有这个“功能”的用例。所以我想确定这既不是 UB,也不是将来会被“修复”。
我已经浏览了 docs 但找不到这个用例。
这是设计使然。未使用的格式化参数本质上与任何其他函数的未使用参数相同,不是错误。 {fmt} 和 Python 的 str.format
以及 printf
.