Type Punning in C and C++

ingve 36 points 23 comments September 22, 2026
blog.pwkf.org · View on Hacker News

Discussion Highlights (8 comments)

K0IN

Does reinterpret_cast works in c++ for this?

antiloper

> The C vs C++ distinction here is genuinely treacherous What's so genuine about this?

eqvinox

The example included below "Why C and C++ Differ" is UB in both C and C++ (and says nothing about "why" C & C++ differ). The article isn't overall wrong but that bit is just... (Feels a bit like LLM junk, but honestly not sure.)

pipe01

Is it necessary to use the lowest possible font weight?

scoopr

I just watched video[0] that argues if you can consteval something, then it must be free of UB, which seems compelling, at least for these lower level helpers. Unfortunately, it seems memcpy is not constexpr, so cannot be used like this, but std::bit_cast actually works[1] as constexpr, so I think in C++ that would now be the most preferred use. It won't allow the union either. [0] https://www.youtube.com/watch?v=-LAXqqqX274 [1] https://godbolt.org/z/xGzjTMGvv

StilesCrisis

The conclusion is simply wrong. `union` should not be used for type-punning in C++, or in C code which might be compiled by a C++ compiler. I can't downvote posts yet, but if you have the ability, consider it. This is clearly LLM slop without human review.

LelouBil

I don't understand the example in "Why C and C++ Differ". Shouldn't the code return 3 in the base case and 4 if the check for 2 was assumed to always hold ?

Martin_Silenus

Hackers don't make Quake III Arena by trusting C rules or compiler optimizations anyway.

Semantic search powered by Rivestack pgvector
7,406 stories · 68,254 chunks indexed