Three concrete side-by-side examples beyond the enum-to-string hook in the README. Each pair shows what a vanilla LLM emits and what cpp26-adapter biases it toward.
"
int divide(int a, int b)— express thatb != 0is a programmer error."
Vanilla — assert(b != 0); (disappears in release builds).
With plugin — P2900 contracts, enforced under the build's chosen contract-evaluation semantic:
int divide(int a, int b) pre (b != 0) { return a / b; }"Start with 7, multiply by 6, wait synchronously."
Vanilla — std::async(std::launch::async, []{ return 7*6; }).get();
With plugin — P2300 std::execution senders:
namespace ex = std::execution;
auto [r] = ex::sync_wait(ex::just(7) | ex::then([](int x){ return x*6; })).value();"Include the bytes of
assets/icon.pngas a constexpr array."
Vanilla — pre-build xxd -i or objcopy --add-section.
With plugin — P1967:
constexpr unsigned char icon_png[] = {
#embed "assets/icon.png"
};Three sanity checks that should all work with no further setup after /plugin install cpp26-adapter@parasxos/claude-plugins:
- Ask Claude "write enum-to-string for
enum class E { A, B }" — the response should usestd::metareflection, not X-macros ormagic_enum. - Run
@cpp26-reviewer src/foo.cpp— should return a YAML report withstatus: pass | needs-changes | compiler-lag-only. - Run
/cpp26-initin an empty directory — the scaffoldedCMakeLists.txtshould build a#include <print>+std::print("hi\n")hello-world viacmake -B build && cmake --build build.