如何在Doxygen中对模板特化的成员函数进行分组
解决方案
要在保留全局不排序配置的前提下,让foo的模板版本和特化版本分组展示,同时print函数排在最后,可以通过Doxygen的分组标签实现,具体步骤如下:
步骤1:在类声明中为模板foo函数创建命名组
修改类A的源码,用@name给模板foo指定一个唯一分组标识,并用@{和@}包裹该函数:
/** * Example class */ template<typename T> class A { public: /** * @name A_foo_overloads * @{ */ /** * Member function 1 */ T foo(T a); /** @} */ /** * Member function 2 */ void print(); };
这里的A_foo_overloads是自定义的分组标识,只要确保和后续特化函数的分组引用一致即可。
步骤2:在外部特化的foo函数中关联该分组
在特化foo的注释中,添加@relates明确归属类A,再用@ingroup关联之前创建的分组:
/** * Template specialization of member function foo * @relates A * @ingroup A_foo_overloads */ template<> double A<double>::foo(double a) { return a; }
效果说明
这样配置后,Doxygen会自动将同属A_foo_overloads组的两个foo函数放在一起展示(顺序为模板版本在前,特化版本在后),print函数则按照原声明顺序排在最后。全局的SORT_MEMBER_DOCS等不排序配置依然生效,不会影响其他类的文档展示逻辑。
内容的提问来源于stack exchange,提问作者SolidMechanicsFan
相关产品推荐
相关产品推荐

