CppCon 2026 opened this week in Aurora, Colorado, and Bjarne Stroustrup used his opening keynote to do something the C++ community has been waiting for: directly answer two years of regulatory pressure. NSA advisories. CISA joint guidance. White House reports naming Rust. All of it pointing at C++ as a memory-safety liability. Stroustrup’s response is called Profiles — and he’s betting it’s enough.
What Profiles Actually Are
Profiles are named sets of compiler-enforced rules. You opt a module or translation unit into a Profile, and the compiler statically prohibits the patterns known to cause undefined behavior — raw pointer arithmetic, uninitialized reads, out-of-bounds indexing. No runtime overhead. No garbage collector. No rewrite.
The strategy Stroustrup calls “subset of superset”: extend the language with safer libraries, then statically ban the unsafe surface area. WebKit already used this approach to harden more than 4 million lines of C++ code. The Profiles framework formalizes it into something the standard can mandate.
The regulatory context matters here. Memory corruption vulnerabilities account for roughly 70% of all CVEs in large C/C++ codebases — a number Microsoft arrived at by analyzing a decade of Windows bugs. That statistic is what CISA and the NSA have been citing when they tell organizations to migrate away from C++. Profiles are the C++ committee’s argument that migration isn’t the only option.
Worth noting: the [[profiles::enforce]] attribute (proposal P3984) targets C++29, not C++26. What C++26 already shipped — hardened standard library, erroneous behavior for uninitialized variables, contracts — provides the foundation. The full enforcement mechanism comes later. The building blocks are already in your compiler.
What You Can Enable Right Now
GCC 16.1 ships with most C++26 features, and the practical gains from upgrading are real. Google’s production rollout of C++26 hardening caught over 1,000 bugs, cut their segfault rate by roughly 30%, and cost approximately 0.3% in performance. That is not a theoretical win.
g++ -std=c++26 -fhardened -Wall -o myapp myapp.cpp
With -fhardened, out-of-bounds access on std::vector, std::string_view, and std::span becomes a contract violation instead of silent undefined behavior. No source code changes. Uninitialized local variables are no longer undefined behavior in C++26 — the compiler initializes them to a deterministic bit pattern. Just recompile.
Contracts ([[pre:]] and [[post:]] annotations) let you start expressing preconditions now, enabling them in debug builds and disabling in release. The “pay only for what you use” model is what Stroustrup has always argued is C++’s advantage over managed runtimes.
The Historic Language Panel
The conference’s most significant moment may not be a keynote. On Tuesday, September 15, CppCon is hosting what it describes as a once-in-a-generation event: Bjarne Stroustrup, Guido van Rossum, and Mads Torgersen on the same stage for the first time ever. C++, Python, and C# — the three languages that between them define how most professional software gets written.
The topics: where they got language design right, where they would start over, and how you steer a language with millions of users and decades of existing code without breaking everything downstream. CppCon’s own announcement noted that Stroustrup and van Rossum “have never been on stage together anywhere and may never be again.”
The lessons extend well beyond language design. Anyone maintaining a library, framework, or platform with backward compatibility constraints will find something useful here. The recording will be worth watching even if you never write a line of C++.
Herb Sutter’s Closing Argument
Herb Sutter, chair emeritus of the ISO C++ committee, closes the conference with a thesis that pushes back against the “C++ is dying” narrative. His argument: C++ is adding its most significant expressive power (reflection) and addressing its most-cited weaknesses (memory safety) at the exact moment that chip supply constraints and power efficiency requirements make deterministic performance more valuable again. Read Sutter’s keynote description for the full framing.
On AI: useful for routine patterns, not a replacement for safety-critical reasoning or performance tuning. C++26 is the biggest release since C++11. C++29 — anchored by Profiles enforcement — is already underway.
How to Follow Along
Sessions are in-person only this year, but recordings go to the CppCon YouTube channel shortly after each talk — free, as they have been since 2014. Timur Doumler’s keynote on how C++26 changes everyday coding is the practical companion to Stroustrup’s more architectural Profiles talk. See the InfoQ C++26 feature summary if you want a head start before the recordings drop.













