1

doxygen では、関数パラメーターの一部の C++ テンプレート パラメーターが実装の詳細であり、ユーザーによって指定されるべきではないことを指定する一般的な方法はありますか?

たとえば、メタプログラミング手法で再帰レベル カウンターとして使用されるテンプレート パラメーターや、関数内の SFINAE パラメーターは?

例えば ​​:

/// \brief Do something
/// \tparam MyFlag A flag...
/// \tparam Limit Recursion limit
/// \tparam Current Recursion level counter. SHOULD NOT BE EXPLICITELY SPECIFIED !!!
template<bool MyFlag, unsigned int Limit, unsigned int Current = 0> myFunction();

「SHOULD NOT BE EXPLICITELY SPECIFIED !!!」に相当する doxygen 正規化オプションはありますか? ?

4

2 に答える 2

3

テンプレート全体が異なるインターフェースの実装の詳細であるように私には思えます:

template<bool MyFlag, unsigned int Limit, unsigned int Current = 0> myFunctionImpl();

template<bool MyFlag, unsigned int Limit> myFunction() {
   myFunctionImpl<MyFlag, Limit, 0>();
}

ドキュメント化が容易になりました: myFunction()(およびそのすべての引数) はインターフェイスの一部であり、反復カウンターは含まれません。myFunctionImpl()はそのインターフェースの実装であり、文書化する必要はまったくありません (または、それが実装の詳細であり、ユーザー コードがそれに依存したり、直接使用したりしてはならないことを示すコメントを最小限にとどめるだけです)。必要に応じて、実装を#ifdefブロックで囲んで、doxygen プリプロセッサがそれを削除し、生成されたドキュメントに表示されないようにすることができます。

于 2012-09-15T03:50:13.203 に答える
0

パラメータを指定してはならないことを伝える 1 つのオプションは、ドキュメントでそれを非表示にすることです。たとえば、内部パラメータを条件付きでコンパイルできます。

/// \brief Do something
/// \tparam MyFlag A flag...
/// \tparam Limit Recursion limit
template<bool MyFlag, unsigned int Limit
#if !defined(DOXYGEN)
        , unsigned int Current = 0
#endif
> myFunction();

これにより、それらがドキュメントに表示されなくなりますが、実装では引き続き使用できます。

于 2012-09-15T03:35:07.170 に答える