Thinking in C++, Vol. 1: Introduction to Standard C++, 2nd Edition