C++ memory provenience is very complicated (and possibly unsound) because it lets you do all sorts of complicated things like this.