To get the most out of my talks at this year’s C&B, it will be helpful to acquire some background information in advance.
For Adventures in Perfect Forwarding, I’ll essentially assume you know the fundamentals of move semantics, i.e., lvalues vs. rvalues, rvalue references, and the behavior of “T&&” parameters in function templates. (The talk actually contains what I call a “micro-review” of these topics, but it’s very short.) There is lots of information about move semantics and its underlying technology scattered about the Internet, but one source I like to point people to is Thomas Becker’s C++ Rvalue References Explained. Another good choice is Stephan T. Lavavej’s blog entry devoted to the topic.
My talk on the C++0x Memory Model doesn’t really assume much background beyond a familiarity with the existence of multithreaded code, but if you’d like to familiarize yourself with some of the key motivating issues I’ll be addressing, I recommend the article on Double-Checked Locking that Andrei and I wrote in 2004. That article will also introduce you to the double-checked locking pattern, which I’ll briefly discuss in the talk.
See you soon!
PS – It has occurred to me recently that C++ doesn’t seem to have a name for “T&&” parameters in function templates. Sometimes I see people refer to them as rvalue reference parameters, but that’s both wrong and misleading: they may or may not be rvalue reference parameters in the functions generated from the template. Orally, I tend to refer to them as “T ref ref” parameters, and you can see that I refer to them in writing as “T&&” parameters, but I think we really need a standard term for them. Maybe “universal reference parameters” (because they become either T& or T&& parameters in functions instantiated from the template)? What do you think?