Hurricane Hunters are flying into West Coast storms earlier than ever – The Washington Post:
Atmospheric rivers can carry 25 times the water equivalent of the Mississippi River in a stream up to 500 miles wide and 2,000 miles long.
NYC, Politics, and Tech
Hurricane Hunters are flying into West Coast storms earlier than ever – The Washington Post:
Atmospheric rivers can carry 25 times the water equivalent of the Mississippi River in a stream up to 500 miles wide and 2,000 miles long.
-fno-exceptions
-fno-rtti
down_cast
5 instructions
g++ -g3??? ; helps make inline functions not look inline; macros
Malloc and free are intercepted. Shadow memory keeps track
Record and replay nondeterministic steps. Just Re execute to get to current point
What’s The best way for a c++ programmer to make money? Inheritance
Synopsis
std::move()
is an unsafe operation
Applying “Design by Contract”
A compile time constraint to select an appropriate operation
Contracts assert at runtime if an an operations
A runtime constraint to select an appropriate operation is know a pattern matching
No Raw Loops
Container support these:
Use strong preconditions to move the issue to the caller
https://sean-parent.stlab.cc for talks
example with sso_string and union
If somebody can (ab)use your API, they will
Types Encode constraints
int timeout; int number_of_pumpkins = 6*timeout;
better:
void set_deadline (absl::Duration deadline);
See “Time Programming Funamentals” by Greg Miller
GitHub.com/llvm-mirror/clang-tools-extra/tree/master/clang-tidy/abseil
sort()
algorithm needs to make many decision: attributes need to be introspected/reflect. E.g. cost of comparison; cost of move; etc
static_if
is a fundamental building block just like
if
std::sort(a.begin(), a.end())
Instead:
ranges::sort(a);
…
for (int i : rng::filter_view (a, is_six)) { std::cout << i << “ “; }
Tristan Brindel NanoRange
Godbolt
O(1)
for copy and assignment
for (int i = range_filter_view (vi, is_event))
ranges::sort(vistuff, std::less<>{}, [](auto const &i) {return i.value;})
…
P0709 R2 Zero-overhead deterministic exceptions (static exceptions)
Swift has best error handler
Exploding return types
p03w3R7 std::expected
p0798R4 Monadic operations for std::optional
p1028R1
error code always represent an error
p1029R1 [[move relocates]
p1144 object relocation in terms of move plus destroy
With compiler optimizations no extra overhead compared to regular return
error_code fits in two registers
auto result = try add_one (divide (42, parse_int(input));
levelofindirection.com/refs/dawn.html
boost::outcome
intptr_t
?