背景
std::format在传参数量少于格式串所需参数数量时,会抛出异常。而在大部分的应用场景下,参数数量不一致提供编译报错更加合适,可以促进我们更早发现问题并进行改正。
最终效果
[code]// 测试输出接口。template void Print(const std::string& _Fmt, const T&... _Args){ cout = '0' && fmt = MAX_ARGS_NUM) { // 当前编号大于最大上限,则直接视为非法格式串 return -1; } } } else if (fmt == ':') { // 遇到冒号,说明接下来是格式串规则,直接跳过 for (; i + 1 < fmt.size() && fmt[i + 1] != '}'; ++i) { ; } } else { // 解析替换串时,遇上其他字符,均将格式串视为非法。 return -1; } } break; } } // 最终状态必须为普通串解析状态。 return state == NORMAL ? nArgsNum : -1;}// 可变参数数量辅助器template std::integral_constant VariableArgsNumHelper(const Args & ...);// 测试输出接口。template void Print(const std::string& _Fmt, const T&... _Args){ cout |