Tonight he complained that when he put a reference to foo on his list, the destructor got called when the list went out of scope. "That's a list <foo> you've got there not a list <foo &>," I said. "Now imagine if you actually had a list of references and think about how the objects would eventually get deleted." He had gone through the necessary realization and reached a state of "abject terror" within minutes. That, my friends, is how you use c++ as an intelligence test: how fast does it take someone to realize exactly how much rope they have.