Re:Compiler Bug Causes Compiler Bug: How a 12-Year-Old G++ B...
by jeffbee on Friday August 15, 2025 @04:18PM
(#44916869)
The horrendous hacks went away with concepts. SFINAE is dead. Spaceship operator, while perhaps not ideal from every perspective, radically simplifies the workload of implementing comparators.
Re:Compiler Bug Causes Compiler Bug: How a 12-Year-Old G++ B...
by saagarjha on Friday August 15, 2025 @05:42PM
(#44917580)
Assuming the thing you want actually has a concept, sure.
Re:Compiler Bug Causes Compiler Bug: How a 12-Year-Old G++ B...
by majoe on Friday August 15, 2025 @06:29PM
(#44918018)
You can define your own concepts. What is your point?
I haven't seen an example yet, where concepts weren't simpler and easier to read/understand than SFINAE shenanigans.
Re:Compiler Bug Causes Compiler Bug: How a 12-Year-Old G++ B...
by jeffbee on Friday August 15, 2025 @07:19PM
(#44918385)
Not only can you define concepts, it is highly entertaining and educational. You can write a concept that makes a function only available on Tuesdays, for example.
Re:Compiler Bug Causes Compiler Bug: How a 12-Year-Old G++ B...
by ranger_danger on Friday August 15, 2025 @07:11PM
(#44918330)
I don't use templates hardly at all, and I find the added changes in later versions to seriously complicate what I would prefer to be much simpler, for example initialization rules... so that's one of several reasons I like to stick to older C++ versions.
Re:Compiler Bug Causes Compiler Bug: How a 12-Year-Old G++ B...
by addaon on Friday August 15, 2025 @09:01PM
(#44919031)
C++ pre- and post- C++11 are really different languages. It’s by far the biggest break (so far in my career) in how the language is used. I’ll gladly debate the detailed trade-offs of many of the newer features, but going back to a world before rvalue references is too horrifying to consider.
Making anything remotely useful out of templates was deeply into hideous SFINAE-land (substitution-failure-is-not-an-error) leading to horrible unreadable templates during 98 (and the variable-number templates in 11 while being useful only made it explode in horrendeous hacks).
"if constexpr" from C++ 17 and forward actually makes template-expansions not too horrid. you can do template expansions that reads mostly like regular if-elseif-else clauses (and I think that was perhaps part of the impetus for Zig's comptime, starting from this point with a clean slate instead of going through regular template evolution hell).