-
Notifications
You must be signed in to change notification settings - Fork 93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Regression with class template specialization matching in Doxygen 1.9.1 #251
Comments
Hi, this actually seems like a regression in Doxygen 1.9.1 (or possibly other versions around that one). I managed to strip it down to just the following: template<class T> struct Outer;
template<class T> struct Outer<
std::enable_if_t<std::is_same<T, int>::value>
> {
struct FirstInner {};
};
template<class T> struct Outer<
std::enable_if_t<!std::is_same<T, int>::value>
> {
struct SecondInner {};
}; On both 1.8.16 and 1.12, this produces a correct output, while on 1.9.1 this leads to the assertion you're encountering, and additionally Doxygen itself complains that
Those warnings then lead to an unspecialized Both the Your fix attempt then makes the build passing, yes, but the parent name doesn't get correctly stripped -- it should list just Funnily enough, if I change my stripped-down case to the following (i.e., using the C++11-style template<class T> struct Outer;
template<class T> struct Outer<
typename std::enable_if<std::is_same<T, int>::value>::type
> {
struct FirstInner {};
};
template<class T> struct Outer<
typename std::enable_if<!std::is_same<T, int>::value>::type
> {
/** @brief Foo */
struct SecondInner {};
}; |
Thanks a lot for the detailed (!) response. I was suspecting Doxygen to be the culprit, but I didn't have the patience to track it down properly.
Alright, if it works with 1.12 then I guess there's no point in reporting this in Doxygen. I will try to adapt our documentation workflow to use the latest version (maybe the binary release will work, since Ubuntu is using 1.9.8). |
Please see #215 -- I personally had to revert back to 1.8.16 because it's far from great. On the m.css side all the workarounds for 1.12 are in place so it shouldn't wildly assert and such, but there are a few serious regressions for which I so far wasn't able to figure out a workaround nor a patch. I hope to get back to that before the maintainers publish a new release (which they often do during summer holidays or christmas), but it's an uphill battle. #239 might also affect you. If the above-suggested workaround with In any case, I'll add a better assertion message for this, just wanted to do some bisecting to know what all versions are affected. |
Just FYI I have opted to downgrade Doxygen to 1.8.16 to keep in sync with the CI here. The generated docs seem to be correct now. |
Following assertion triggers in recent builds of DARMA-tasking/vt when using the latest version of
m.css
(699abdd):m.css/documentation/doxygen.py
Line 2600 in 699abdd
Traceback with additional details:
Proposed fix:
This seems to be enough to get our build passing, not sure if any caveats apply.
The text was updated successfully, but these errors were encountered: