Skip to main content

C++17 Lock-in and Coroutine Exclusion

Context

The callback style is criticized as callback hell; C++20 coroutines can eliminate callbacks but bring ABI/debugging/stack-tracing costs.

Decision

Stay on C++17 with the callback style: coroutines are excluded because MSVC/gcc coroutine ABIs are still unstable, stack tracing and crash reporting break on coroutine frames, and Drogon's official CoroMapper is incompatible with this project's Mapper+Criteria discipline (including the JOIN ban). Re-evaluation trigger: mature coroutine support in the toolchains plus complex control flows that callbacks cannot express.

Consequences and Current State

Callback discipline is governed by the lifetime pattern of ADR-0006; db-operations.md explicitly bans CoroMapper.