
callonce ships as source — a single header plus its tests, examples, CMake build files and the Conan recipe. There is no compiled artefact to download; the library is #include <memoized_invoke.hh>. 1.1.0.0 is the first public release — until now callonce lived only as a proposal draft and an internal dependency.
Each archive contains src/memoized_invoke.hh, examples/, CMakeLists.txt, Doxyfile.in, the Conan recipe and LICENSE. test/ is not part of it — clone the repository instead if you want to build and run the unit test suite. Extract and follow the installation guide; nothing beyond a C++20 compiler and CMake 3.20+ is required to build the examples.
sha256sum -c callonce-1.1.0.0.tar.gz.sha256
# callonce-1.1.0.0.tar.gz: OK
Then extract and follow the installation guide.
1.1.0.0 — first public release. The reference implementation for the std::memoized_invoke proposal, packaged as a standalone library.
memoized_invoke<ExecutionPolicy, F, Args...> — run any callable at most once per argument set, cache the result, reset(), and re-run when the arguments change. Covers free / member function pointers, lambdas, functors, std::function and std::bind_front results, with CTAD deducing every template parameter.single_threaded (zero overhead, the CTAD default) and lock_free (atomic CAS + C++20 atomic::wait) — selected via make_memoized.lock_free waiter woken because the winning thread's callable threw used to fall through without running the callable itself, so the next read of the cache threw std::bad_optional_access and terminated the worker thread. check_and_call() now re-enters and retries, matching the documented "another thread can retry" contract. A 200-iteration regression test covers it. (See the blog post.)Binary packages (.deb, .rpm) are not planned — callonce is header-only, so there is nothing to package beyond the source.