Skip to content

\ref fails to resolve reference to a member of a struct nested in a class template specialization (C++) #10559

@krivenko

Description

@krivenko

Describe the bug

Doxygen 1.9.5 introduced a regression which affects \ref's ability to resolve members of structures that are defined within a class template specialization.

/// Outer class template
template<bool B, typename T> class Outer {};

/// Specialization of Outer
template<typename T> class Outer<true, T> {

public:
    /// Inner structure
    struct Inner {
        /// Data member
        int x;

        /// Return
        /// 1. @ref Outer<true, T>::Inner::x
        /// 2. @ref Inner::x
        /// 3. @ref x
        int get_x() const { return x; }
    };
};

Doxygen 1.9.4 generates correct links from all the 3 instances of @ref here, while 1.9.5 fails to do so.

issue.hpp:14: warning: unable to resolve reference to 'Outer<true, T>::Inner::x' for \ref command
issue.hpp:15: warning: unable to resolve reference to 'Inner::x' for \ref command
issue.hpp:16: warning: unable to resolve reference to 'x' for \ref command

The exact commit where the regression was introduced is b290399.

Expected behavior

Proper link generation, the way it was in 1.9.4.

To Reproduce

ref_struct_in_class_spec.zip

Version

Doxygen 1.9.5 (b290399*)
Gentoo Linux x86_64
Doxygen built from git sources, GCC 13.2.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions