如果参数多于 std::format 中的要求,为什么不是错误?

问题描述 投票:0回答:1

std::format 上的

cppref 页面
说:

提供多于格式字符串所需的参数并不是错误:

// OK, produces "Hello world!"
std::format("{} {}!", "Hello", "world", "something"); 

既然

std::format
有编译时检查来查看
fmt
和参数是否不匹配,为什么上面的示例代码不被视为错误?

背后的原理是什么?

c++ c++20 standards type-safety compile-time-type-checking
1个回答
0
投票

有几个原因。

  1. 您可以在格式字符串中多次使用相同的参数:

     std::fomat("{1},{0},{1}", x, y);
    

    没有理由排除零次提及它。

  2. 它实际上在提供本地化字符串方面很方便:

     std::vformat(get_string("Preheat the oven to {} degrees"), temp, temp*9/5+32);
    

    get_string
    返回的字符串将包含
    {0}
    {1}

© www.soinside.com 2019 - 2024. All rights reserved.