That's a pretty nice explanation of some topics that are difficult to teach. But, I have some comments/nit-picks (I think nit-picks are valid, since the slide deck mostly seems to be about being precise with the behavior and semantics of the language).
On page 24:
a declaration `int f();` says there is a function `f` that takes any number of arguments.
Might be more accurately:
a declaration `int f();` says there is a function `f` that takes an unspecified number of arguments. The caller is required to make sure the function is called with the correct number and type of arguments.
Page 243:
They use the `auto` keyword in its pre-C++11 incarnation! I don't think I've ever seen it used outside of some old, old textbooks. In fact, given its overall uselessness and that the keyword has been repurposed in C++11, I think the old use of the `auto` keyword should be stricken from tutorials, except perhaps to explain that you shouldn't ever use it.
Page 245:
I wish they identified which compiler gives a warning about using an uninitialized variable only in an optimized build - that seems to be a poor behavior for a compiler. I'm not saying this doesn't happen, but I'd like to be aware of where it does.
Page 255:
I wish they provided a reference for Stroustrup's self-assessment. Just out of interest and in case anyone ever asks for my self-assessment, then I could provide some context.