Bap*_*cht 8 c++ templates doxygen
在我正在开发的库中,我经常有这样的代码:
template<typename T = P, enable_if_c<has_V_field<T>> = detail::dummy>
constexpr std::size_t v(){
return T::V;
}
template<typename T = P, disable_if_c<has_V_field<T>> = detail::dummy>
constexpr std::size_t v(){
return 1;
}
Run Code Online (Sandbox Code Playgroud)
这两个函数执行相同的操作,但是根据类型启用.我想只记录其中一个,而且,如果可能的话,我希望在Doxygen中显示它而没有模板的东西,如constexpr std::size_t v()
.对于用户来说,这里的模板根本没有价值.
Doxygen可以做到这一点吗?
您可以将您希望看到的函数放在条件部分中,如下所示:
#ifdef DOXYGEN_ONLY
/*! documentation for v. */
constexpr std::size_t v();
#else // actual implementation with two variants selected via SFINAE
template<typename T = P, enable_if_c<has_V_field<T>> = detail::dummy>
constexpr std::size_t v(){
return T::V;
}
template<typename T = P, disable_if_c<has_V_field<T>> = detail::dummy>
constexpr std::size_t v(){
return 1;
}
#endif
Run Code Online (Sandbox Code Playgroud)
然后使用以下配置设置:
ENABLE_PREPROCESSING = YES
PREDEFINED = DOXYGEN_ONLY
Run Code Online (Sandbox Code Playgroud)
您可以使用\fn
: http: //www.doxygen.nl/manual/commands.html#cmdfn
像这样的东西:(未经测试)
/*! \fn template<typename T> constexpr std::size_t v()
* \brief A function.
* \return 1 or T::V.
*/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
346 次 |
最近记录: |