ToB企服应用市场:ToB评测及商务社交产业平台

标题: 通过宏封装实现std::format编译期检查参数数量是否一致 [打印本页]

作者: 来自云龙湖轮廓分明的月亮    时间: 2022-9-16 17:22
标题: 通过宏封装实现std::format编译期检查参数数量是否一致
背景

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




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4