Doxygen 为基 class 函数生成一个关于派生 class 中不存在的函数的奇怪错误

Doxygen generates a strange error for base class function about nonexisting function in the derived class

代码如下:

namespace Test {
/// Base class
class Base
{
public:
    /// Method foo
    /// @param a ParamA
    /// @param b ParamB
    virtual void foo(char a, int b);

    /// Method foo
    /// @param a ParamA
    /// @param b ParamB
    /// @param c ParamC
    virtual void foo(char a, int b, char c);

    /// Method foo
    /// @param m ParamM
    template<typename T>
    void foo(std::vector<T> m)
    {

    }

};

/// Derrived class
class Derrived : public Base
{
public:
    using Base::foo;

    /// Method foo
    /// @param a ParamA
    /// @param b ParamB
    void foo(char a, int b) override;
}; 
}

如果此代码将使用 Doxygen 进行处理。我们得到了奇怪的错误:

error: argument 'm' of command @param is not found in the argument list of Test::Derrived::foo(typename T) (warning treated as error, aborting now)

如果注释行 using Base::foo; Doxygen 正确处理了这个文件。 看起来像是 Doxygen 中的错误,但有人知道解决方法吗?

  • 在 doxygen 1.9.1(含)之前的 doxygen 版本中,我能够重现该问题。
  • 1.9.2 及更高版本问题已解决。

当前doxygen版本为1.9.4 (5d15657a55555e6181a7830a5c723af75e7577e2)

这个问题的解决方法是更新你的doxygen版本到当前的doxygen版本。