2017-02-01 29 views
-1

と文句を言う[。問題を再現するための最小限のセットを提供するために、編集]Doxygenのは、同じテンプレートを取るオーバーロード関数について、異なるテンプレートパラメータ

私はこれに似たC++コード(ファイル.h)を持っています

namespace xxx { 
    template< typename T > 
    class Array {}; 

    using sint = std::ptrdiff_t; 
    using uint = std::size_t; 
    using dfloat = double; 
    using IntegerArray = Array<xxx::sint>; 
    using UnsignedArray = Array<xxx::uint>; 
    using FloatArray = Array<xxx::dfloat>; 
} 

/// \brief A namespace 
namespace yyy { 
namespace { 

    /// \brief A function 
    inline out* function(xxx::UnsignedArray const& in) {} 

    /// \brief A function 
    inline out* function(xxx::IntegerArray const& in) {} 

    /// \brief A function 
    inline out* function(xxx::FloatArray const& in) {} 

    /// \brief A class 
    class AAA { 
    public: 
     /// \brief A class method 
     out* function(xxx::BBB const& bbb) {} 
}; 
}} 

Doxyfileというのである:

:Doxygenでは、と文句を言い

OUTPUT_DIRECTORY  = out 
EXTRACT_ANON_NSPACES = YES 
INPUT     = . 
FILE_PATTERNS   = *.h 

2番目と3番目の機能は見えません。最初のものだけがドキュメントに表示されます。このエラーを生成するには、匿名の名前空間が必要です。同じ名前のメソッドを持つクラスと同じです。

誰かが回避策を知っていますか?

+0

を文書化するのに役立ちますか?どの特定の設定はあなたのdoxygen設定(Doxyfile)ファイルにありますか?あなたもここで共有することができますそれをテストするための最小の例を作ろうとしましたか? – albert

+0

MacOSのDoxygen 1.8.13、HomeBrew経由でインストール。私は最小限のセットで作業している、私は少し質問を更新します。 –

+0

また、匿名名前空間またはAAAクラスを使用しない場合、エラーは表示されませんが、3つの機能はすべて同一であるとみなされ、ドキュメントがマージされます。組み込み型をテンプレート引数として使用して 'xxxArray'型を定義すると、3つの関数すべてが別々に文書化されます。 –

答えて

0

関数をオーバーロードすると、オーバーロードされた関数のドキュメントを追加するために、/ overloadキーワードを使用する必要があります。

template<typename T> class Array; 
using UnsignedArray = Array<unsigned> 
using IntegerArray = Array<int> 
using FloatArray = Array<float> 

/// \overload brief A function 
void function(UnsignedArray const&); 

/// \overload brief A function 
void function(IntegerArray const&); 

/// \overload brief A function 
void function(FloatArray const&); 

この

はdoxygenは、別途それらを使用しているdoxygenのバージョンの

+0

これは必ずしも必要ではないし、問題を解決しない。ありがとう、しかし! –

関連する問題