Trust your compiler: Modern C++
categorica.io
Trust your compiler: Modern C++
1–10 of 47 posts
Re: Trust your compiler: Modern C++
#2Re: Trust your compiler: Modern C++
#3Re: Trust your compiler: Modern C++
#4You want to see a beautiful compiler? Look at Plan 9’s compiler suite. A man could understand and even build on that.
Re: Trust your compiler: Modern C++
#5> std::visit over std::variant is lowered to a switch over the active alternative.
> In this case, layout is probably doing more work than the dispatch mechanism itself.
Very likely because last time I checked visit lowers to a virtual call.
Re: Trust your compiler: Modern C++
#6Trust the compiler - sure - but we can't change the whole program by using -ffast-math, unfortunately, so that particular one is out.
TL;DR:
A vast majority of the programmers I've worked with don't understand the nuances of FP in general, nor the various extents of IEEE-754 support in different programming languages.
So for important numerical programming, I think clarity regarding the FP operations being performed can be crucial. I'm just unclear if modern C++ is a significant factor for that.
Re: Trust your compiler: Modern C++
#7[flagged]
Re: Trust your compiler: Modern C++
#8There are proposals to introduce better exceptions into C++. Like this: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p07....
But until it's not in the standard, people should use std::expceted instead.
Re: Trust your compiler: Modern C++
#9 inline double algorithm_call(std::span xs) noexcept {
return std::accumulate(
xs.begin(),
xs.end(),
0.0,
[](double acc, double volts) {
auto mv = calibrated_mv(volts);
auto err = residual(mv);
return weighted_square(err) + acc;
});
}
more readable, concise, and easier on my eyes than inline double raw_loop(std::span xs) noexcept {
double sum = 0.0;
for (double volts : xs) {
auto mv = calibrated_mv(volts);
auto err = residual(mv);
sum += weighted_square(err);
}
return sum;
}
Sure, there are some algorithms in that I'm rather not reimplement myself, but this one is not it.Re: Trust your compiler: Modern C++
#10Every time I see "use ranges and algorithms!" examples, I am baffled that apparently, I am supposed to find inline double algorithm_call(std::span xs) noexcept { return std::accumulate( xs.begin(), xs.end(), 0.0, [](double acc, double volts) { auto mv = calibrated_mv(volts); auto err = residual(mv); return weighted_square(err) + acc; }); } more readable, concise, and easier on my eyes than inline double raw_loop(std:…