通过宏封装实现std::format编译期检查参数数量是否一致 ...

打印 上一主题 下一主题

主题 870|帖子 870|积分 2620

背景

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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表