"Undefined Behavior in C++; what is it, and why should I care":
https://github.com/boostcon/cppnow_presentations_2014/blob/master/files/Undefined-Behavior.pdf?raw=true
This reminds us to remove as much undefined behavior as
possible from D.
Fixing some of those problems will break some D code. An example
from the slides pack:
void main() {
import std.stdio;
auto arr = [0, 2, 4, 6, 8];
int i = 1;
writeln(i + arr[++i] + arr[i++]);
}
It gives different results in dmd and ldc2:
...>dmd -wi -run temp.d
9
...>ldmd2 -wi -run temp.d
10
Hopefully no one writes code like that, but this situation can't
be accepted in a language that tries to be safer and better than
C/C++.
Bye,
bearophile