documentation/doxygen: added support for C++20 concepts #232
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds all the plumbing necessary to have C++20's
concepts
appear in the doxygen documentation.It also makes a number of other small fixes in order to have the tests behave better on Doxygen 1.9.0 (e.g.
constexpr
andstatic
leaking into variable types, similar to my previous fix for functions in #228).Overall this is a relatively substantial PR and there's still a number of boxes that need to be ticked, so I'm marking it as 'draft'.
Outstanding tasks:
Decide how to show the actual 'implementation' of the concepts.
<compounddef>
but they also get an<initializer>
). Since their implementations can be pretty verbose/non-trivial (example) it probably doesn't make sense to inline them in the same way an as enum initializer, and instead display it on the detail page (i.e. extend thebase-class-reference.html
template). I have no idea how do that and have the syntax highlighting work, though.Decide what to do about this: C++ concepts are not linked to namespaces in XML output doxygen/doxygen#9622
<innerconcept>
elements necessary to link concepts to their containing namespace. I've worked around this as part of the XML post-process in Poxy, but haven't yet made any attempt to backport those fixes to m.css (mostly because I'm still not familiar enough with the code to make a good decision about where that should happen). I could port that back to m.css (with some effort), but it also may be sufficient to simply say "hey concepts might be broken before Doxygen 1.9.6".Add tests