top | item 46688191

C++26 Reflection loves QRangeModel

31 points| jandeboevrie | 1 month ago |qt.io

10 comments

order

mcdeltat|1 month ago

I've been an avid C++ user for ages and this is the first time I've seen the final spec of C++26 reflections used in a practical context - and wow am I having a "wtf" moment at the syntax.

^^T ?? obj.[:member:] ?? What is this craziness? No way this is the best we could come up with. I'm actually thinking C++ may be going too far (and this is as someone who thinks template metaprogramming is "fine").

Never before has that quote "inside C++ is a smaller, better language trying to get out" been more applicable.

pjmlp|1 month ago

While I agree it has a certain Perl feeling and I used to advocate for functions/operators, e.g. reflex or similar, it still feels better than unicode operators in FP languages or the two macro systems used by Rust.

At least being based on compile time execution infrastructure means you can debug it on IDEs, Clion already has some work into that direction.

https://blog.jetbrains.com/clion/2025/09/introducing-constex...

psyclobe|1 month ago

Eh, the raw capability of this feature will I think prove its use

themafia|1 month ago

It this even a language for human beings anymore? Or am I just short on cups of coffee this morning?

I appreciate that they're solving a lot of corner cases and adding some advanced functionality in the spec but now we've got language text that looks quite a bit like perl. I wonder if it will acquire some of the same properties.

funkychicken|1 month ago

Most users would not need to use it. But it is invaluable for library/framework authors (like qt).

pjmlp|1 month ago

Until something else takes over the domains where C++ rules, it is what we have, even the crustacean compiler is built on top of C++ infrastructure (LLVM/GCC).

kvemkon|1 month ago

TLDR:

> Reflection in C++26 might be insufficient for replacing moc.

https://wiki.qt.io/C++_reflection_(P2996)_and_moc

PaulDavisThe1st|1 month ago

> NOTE: THIS HAS BEEN WRITTEN AGAINST A VERY EARLY REVISION OF P2996. MANY THINGS HAVE CHANGED SINCE, AND EVERYTHING ON THIS PAGE NEED TO BE RE-EVALUATED BASED ON WHAT EFFECTIVELY LANDED IN C++26!