The generated API reference — every type, every member, the class and collaboration diagrams, the include graph, and the per-function call and caller graphs — lives at /static/api/index.html.
It is produced by Doxygen from the annotated header src/memoized_invoke.hh. Because callonce is header-only, every function body is in that one file, so the call/caller graphs have the whole implementation to analyse — you can see operator() calling check_and_call, which calls try_enter / wait / do_invoke, which calls std::apply.
For a narrative, human-written companion, see the Reference Manual. It covers the same handful of types but with the why — when to reach for lock_free over single_threaded, what the argument cache does and does not remember, how exception rollback interacts with waiting threads. Read the reference for orientation, read the Doxygen tree for the exact signatures and the graphs.
Which one am I looking at?
| Question | Where to look |
|---|---|
"What is the exact signature of operator()(args...)?" | Doxygen › memoized_invoke |
| "When does the argument cache re-run the callable?" | Reference › operator() |
"What does lock_free::wait() actually wait on?" | Doxygen › lock_free |
"Should I use single_threaded or lock_free here?" | User Guide › Execution Policies |
Generating the docs yourself
If you have callonce checked out and Doxygen installed, the CMake target docs produces the HTML tree under build/docs/html/:
cmake -B build
cmake --build build --target docs
xdg-open build/docs/html/index.html
Graphviz dot is picked up automatically when present and enables the graphs; without it Doxygen falls back to its own simple inheritance diagrams. The same output is uploaded here at each release.

