Short answer: “dysfunctional” is the wrong word, but “structurally strained” is right, and the strain is showing.
WG21 is not a body that can’t ship. It shipped concepts, ranges, coroutines, std::expected, mdspan, println, and it currently has reflection, contracts, and std::execution in flight for C++26. A genuinely broken committee doesn’t do that. But the criticisms people make are mostly correct observations about a real failure mode, so let me separate the two.
Where the criticism lands
It can only add, never subtract. This is the actual dysfunction. Nothing has ever been removed; deprecation is decorative.
std::regexis unusable-in-practice and unfixable;vector<bool>is a permanent wart;std::function‘s design is frozen. Every defect the committee ratifies is a debt with no repayment mechanism, and the language only compounds.Decisions are made by whoever is in the room. Consensus in a 200-person room, where attendance is paid for by large employers, is a decision procedure biased toward “the compromise that the room can live with” rather than “the right design.” That’s how you get contracts pulled from C++20 in 2019 after years of work, then re-proposed as P2900 for C++26 — the cycle time is real.
Latency on big-ticket items. The Networking TS has been “almost there” since roughly 2013 and got leapfrogged by
std::execution. Modules took the better part of a decade. This isn’t laziness; it’s that consensus-driven design has no forcing function.No architect. There’s no editor-in-chief with design authority who can say “no, that’s wrong.” Bjarne is respected, not empowered. So the language’s coherence is emergent, not designed.
The safety question is exactly the kind consensus is worst at. The 2025 turn toward safety profiles is a compromise between “we need a memory-safety story” and “no breaking changes, ever,” which is precisely a tradeoff a consensus body will resolve by splitting the difference rather than by picking. Reasonable people think that’s pragmatic; others think it’s the committee standardizing the least-bad thing it could agree on.
The standard is paywalled while development is on open mailing lists and GitHub. The reasoning is public; the normative artifact isn’t.
Where the criticism is unfair
Compare it to what? TC39 has no ABI, one dominant vendor, and a much smaller surface. Rust has no ISO process and no ABI stability promise. C’s committee is arguably worse. C++’s constraint set — 40 years of ABI compatibility, five major implementations with effective veto, embedded through HPC through games — is harder than any of theirs.
Paper culture is a feature. Every decision has a public, archived rationale. You can read why
optional<T&>flip-flopped. That transparency is rare and valuable.Consensus is a check on fashion. Plenty of proposals that would have been adopted by a fast-moving body aged badly. Slowness is sometimes wisdom.
The hard constraints aren’t the committee’s. WG21 has no authority over the ABI. It doesn’t control the Itanium or MSVC ABIs, doesn’t employ implementers, and can’t compel vendors. The most important unresolved problem in C++ is out of its jurisdiction.
My actual view
The precise complaint isn’t “dysfunctional,” it’s: a volunteer, vendor-funded, consensus-only body is trying to govern critical infrastructure, with no removal mechanism, no ABI authority, no design owner, and no budget. The dysfunction is mostly structural and upstream of the committee, not a matter of the members being bad at their jobs — they’re largely competent people doing an impossible job with the wrong tools.
What would genuinely help, in rough order of impact: a formal removal/deprecation track (a real std::regex-ectomy path with a multi-standard sunset), a complexity budget so additions have to be paid for, empirical tooling (compile-time and code-size measurement, usability studies) instead of straw polls, paid staff (technical writers, an actual editor with authority), treating ABI as a first-class work item rather than an ambient disaster, and acknowledging that “safe by default” and “never break code” cannot both be maximally satisfied — a consensus body will keep pretending they can.
Bottom line: it’s not broken, and the people who call it a clown show are usually arguing from one bad experience. But it is an institution built for a smaller language and a slower world, now carrying a language that needs to make an adversarial tradeoff it is structurally bad at making. That’s not dysfunction — it’s a governance design that has reached its limits, and nobody has the authority to redesign it.


