Back to News
Advertisement
Advertisement

⚡ Community Insights

Discussion Sentiment

88% Positive

Analyzed from 475 words in the discussion.

Trending Topics

#reflection#example#string#enum#inline#variable#compiler#same#used#using

Discussion (18 Comments)Read Original on HackerNews

jsd1982•8 minutes ago
I think the conclusion section should indicate that they are based entirely on GCC 16's behavior and current implementation. We should avoid generalizing one compiler's behavior and performance. Curious how this same test would behave once clang ships C++26 reflection.
bluGill•4 minutes ago
I was thinking the same thing. Modules are still not widely used, it is a reasonable guess that there are a lot of optimization opportunities left.
randusername•24 minutes ago
I can't imagine myself using reflection much, but maybe it will eliminate a lot of feature proposals bogging down the committee and they can focus on harder problems.

It would be cool if the stated goal of C++29 was compile times.

w4rh4wk5•10 minutes ago
I'd argue reflection is very much a feature for libraries. You wouldn't use it directly, but your JSON / YAML serialize is then built on top of it. So are your bindings for scripting engines like Lua.
w4rh4wk5•about 1 hour ago
I've been wondering about debug-ability of code using reflection. X-Macros are quite annoying to step through in most debuggers, though possible. While the code in the first example is evaluated fully at compile-time, how would you approach debugging it?
cenamus•20 minutes ago
I mean it's still C++ that's compiled and executed, surely the compiler would be able to provide a way to hook into that?
HarHarVeryFunny•about 1 hour ago
No doubt reflection has been built with other use cases in mind, but it sure would have been nice just to have std::to_string(enum)
bluGill•28 minutes ago
C++ conference speakers (including keynotes) are now begging everyone to stop using enum to string in their example. While they are a simple and easy to understand example, reflection is for much more interesting problems. I can't think of any other example that I would type into a comment box or put on a slide.
surajrmal•23 minutes ago
Anybody the derive traits rust has are a good demo.
sagacity•about 5 hours ago
Oof, that first example (the idiomatic C++26 way) looks so foreign if you're mostly used to C++11.
randusername•about 1 hour ago
I was a fool to assume that the same forces shaping the ugliness of C++ syntax would not also be at work in C++ 26.
bluGill•27 minutes ago
You realize c++11 is closer in age to C++98 than C++26?
ginko•about 1 hour ago
Is it? I'm mostly used to (pre-)C++11 and the only unusual operators I see are ^^T (which I presume accesses the metadata info of T) and [:e:] (which I assume somehow casts the enumerator metadata 'e' to a constant value of T).

And template for but I assume that's like inline for like in zig.

CamouflagedKiwi•about 1 hour ago
requires is also new (not sure exactly when that appeared, it's after the last time I wrote C++ in anger) although I think it's fairly clear what it means. I can only guess at the other two.

Not familiar with Zig but AFAICT `inline for` is about instructing the compiler to unroll the loop, whereas `template for` means it can be evaluated at compile time and each loop iteration can have a different type for the iteration variable. It's a bit crazy but necessary for reflection to work usefully in the way the language sets it up.

ginko•about 1 hour ago
Zig's inline for is also evaluated at comptime:

https://ziglang.org/documentation/master/#inline-for

TZubiri•8 minutes ago
"Enum to string"

We've come full circle huh?

Why do you need this, logging? In that case I would rather reflect the logging statement to pribt any variable name, or hell, just write out the string.

If saving for db, maybe store as string, there's more incentive for an enum in the db, if that's a string you might as well. At any rate it doesn't seem a great idea to depend on a variable name, imagine changing a variable name and stuff breaks.

king_geedorah•40 minutes ago
Another win for X macros and for C style in general, though the author didn’t declare it as such.
SuperV1234•12 minutes ago
Author here. It isn't a clear "win" at all, there are tradeoffs to each approach.