[{"data":1,"prerenderedAt":87},["ShallowReactive",2],{"page-\u002Fcpp\u002Ffmt\u002F函数模板实现类型自定义处理":3},{"id":4,"title":5,"body":6,"description":12,"extension":80,"meta":81,"navigation":82,"path":83,"seo":84,"stem":85,"__hash__":86},"content\u002Fcpp\u002Ffmt\u002F函数模板实现类型自定义处理.md","函数模板实现类型自定义处理",{"type":7,"value":8,"toc":77},"minimark",[9,13,24,31,71,74],[10,11,12],"p",{},"函数模板的基本工作方式：",[14,15,20],"pre",{"className":16,"code":18,"language":19},[17],"language-text","\u002F\u002F fmt 库的核心格式化函数\ntemplate \u003Ctypename T>\nauto format(const T& value) {\n    \u002F\u002F 编译器会根据 T 的实际类型生成不同的代码\n}\n","text",[21,22,18],"code",{"__ignoreMap":23},"",[10,25,26,27,30],{},"当你在代码中写 ",[21,28,29],{},"fmt::print(\"{}\", my_object)"," 时，编译器会：",[32,33,34,49,62],"ol",{},[35,36,37,41,42,45,46],"li",{},[38,39,40],"strong",{},"推导类型","：",[21,43,44],{},"T"," 被推导为 ",[21,47,48],{},"MyClass",[35,50,51,54,55,57,58,61],{},[38,52,53],{},"实例化模板","：生成一个专门处理 ",[21,56,48],{}," 的 ",[21,59,60],{},"format"," 函数",[35,63,64,67,68,70],{},[38,65,66],{},"匹配特化","：如果存在针对 ",[21,69,48],{}," 的特化版本，使用它",[10,72,73],{},"fmt库可以通过模板特化的ADL参数依赖查找来实现自定义的格式化，如果你去fmt\u002Fbase.h中去搜索format，你就可以找得到接近364处的format关键字，这些format都是为了让fmt这个格式化引擎通用实现的，能处理几乎所有类型的数据，并且每个细节都可以被精确控制。",[10,75,76],{},"这种设计让你可以非常自然和高效地格式化自定义类型，而无需付出运行时类型识别或虚函数调用的开销。",{"title":23,"searchDepth":78,"depth":78,"links":79},2,[],"md",{},true,"\u002Fcpp\u002Ffmt\u002F函数模板实现类型自定义处理",{"description":12},"cpp\u002Ffmt\u002F函数模板实现类型自定义处理","GUZL6yEZFl7JsS8rwErsw7LWuLccv81euBGAgAnJA9Y",1791042462888]