C++26 Reflections adventures and compile-time UML
UML: Useless Diagrams vs. Valuable Modeling Tool
- Several commenters see UML as largely pointless: class diagrams restate what’s obvious from reading code, quickly rot if not auto-generated, and often serve mainly to placate “enterprise” managers.
- Others argue this view is too narrow: UML is a full modeling language (structural + behavioral), not just boxes and arrows. For large systems with many interacting modules, tooling that generates UML from code (e.g., via Doxygen) can be very helpful.
- There’s mention of UML being used as a front-end to formal methods (e.g., UML-B, automatic model generation), though others counter that in everyday industry practice UML-as-formal-front-end is rare and mostly academic.
Perceptions of C++ Difficulty and “Real Programmers”
- Some readers feel “small” building apps when reading advanced C++ metaprogramming posts; others say the reflection examples aren’t that hard conceptually, especially for those used to languages like Clojure.
- A recurring point: library development and application development are very different; not every C++ programmer needs to master the entire feature set.
Modern C++ Features and Reflection (std::meta)
- One camp is skeptical of new features (including std::meta): they’re seen as complicating the language, hurting compile times, and solving problems already addressed by IDLs, code generators, or macro libraries.
- Critics say hand-rolled IDL/codegen is often simpler and precisely tailored; they distrust “one-size-fits-all” committee solutions.
- Opponents of this view argue reflection is not “already solved”: macro/codegen solutions are fragile, hard to debug, and create a two-language problem. Standard compile-time reflection is expected to improve serialization, config parsing, CLI handling, cross-language bindings, and editor/web frameworks, in a type-safe way.
- Comparisons are made to Rust procedural macros and reflection/introspection in Rust, Kotlin, Zig, Swift, and Go; C++ is portrayed as lagging here.
- High-performance and trading shops reportedly adopt new standards aggressively; others stuck with older compilers/platforms (gamedev, embedded, IBMi) see slow, costly upgrades and partial feature support.
Ergonomics, Compile Times, and Versions
- Reflection + consteval are seen by some as a path toward C++-native procedural macros; example code shows how reflection can replace parameter-pack gymnastics.
- There’s debate over which standard is the practical “sweet spot” (C++11 vs. C++20/23), and concern about build-time regressions when flipping newer standard flags, especially where modules and libraries aren’t fully aligned.
Meta: Why C++ Threads Feel Political
- Commenters note that C++ discussions reliably attract language wars, trauma from legacy codebases, complaints about bloat and backward compatibility, and evangelism for other languages—giving them an almost “political” tone.