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.