Channel 9 has posted a two-part video  – Herb Sutter’s “atomic<> Weapons” presented at C++ and Beyond 2012 last summer in Asheville, NC. Here are the links: atomic<> Weapons, 1 of 2 and atomic<> Weapons, 2 of 2.


Here is the abstract:

This session in one word: Deep.

It’s a session that includes topics I’ve publicly said for years is Stuff You Shouldn’t Need To Know and I Just Won’t Teach, but it’s becoming achingly clear that people do need to know about it. Achingly, heartbreakingly clear, because some hardware incents you to pull out the big guns to achieve top performance, and C++ programmers just are so addicted to full performance that they’ll reach for the big red levers with the flashing warning lights. Since we can’t keep people from pulling the big red levers, we’d better document the A to Z of what the levers actually do, so that people don’t SCRAM unless they really, really, really meant to.


Channel 9 has posted another video  – Herb Sutter’s “You don’t know [blank] and [blank]” presented at C++ and Beyond 2012 last summer in Asheville, NC. Here’s the link: You don’t know [blank] and [blank].


Here is the abstract:

In addition to the many new C++11 features that everyone’s listing, it has dawned on me over the winter that there’s actually another major change that isn’t being talked about anywhere, or even being listed as a change in C++11 at all as far as I know, because I and other key experts and committee members I’ve asked didn’t fully realize that we altered the basic meaning of not one but two fundamental keywords in C++. It’s a change that has profound consequences, that rewrites and/or invalidates several pieces of pre-C++11 design guidance, and that’s directly related to writing solid code in a concurrent and parallel world. This isn’t just an academic change, either — everyone is going to have to learn and apply the new C++11 guidance that we’ll cover in this session.

I plan to talk about it first at C&B, in a session tentatively titled as above — I’ll fill in the keywords later. You may already guess a few keyword candidates based on the description above, and here’s a final hint: You’ll hardly find two C++ keywords that are older, or whose meanings are more changed from C++98 to C++11. (No, they aren’t auto and register.)


Microsoft’s Channel 9 recently posted a video from C++ and Beyond 2012: Panel – Convincing your Colleagues.


Here is the abstract:

You can’t do a better job if you don’t change what you’re doing, but change is hard.  It’s especially hard when what needs to change is your colleagues’ approach to software development. Moving your team forward often requires persuading your peers to change their behavior, sometimes to do something they’re not doing, other times to stop doing something they’ve become accustomed to.  Whether the issue is to embrace or avoid C++ language features, to adopt new development tools or abandon old ones, to increase use of or scale back on overuse of design patterns, to adhere to coding standards, or any of the plethora of other matters that affect software creation, moving things forward typically requires getting your colleagues to buy into the change you’re proposing.  But how can you do that?

In this panel session, Andrei, Herb, and Scott share how they go about convincing their colleagues to change and take questions from the audience.


Channel 9 has posted a video of Herb Sutter’s “C++ Concurrency” presented at C++ and Beyond 2012 last summer in Asheville, NC. Here’s the link: C++ Concurrency.

herb - concurrencytalk

Herb says:

I’ve spoken and written on these topics before. Here’s what’s different about this talk:

  • Brand new: This material goes beyond what I’ve written and taught about before in my Effective Concurrency articles and courses.
  • Cutting-edge current: It covers the best-practices state of the art techniques and shipping tools, and what parts of that are standardized in C++11 already (the answer to that one may surprise you!) and what’s en route to near-term standardization and why, with coverage of the latest discussions.
  • Blocking vs. non-blocking: What’s the difference between blocking and non-blocking styles, why on earth would you care, which kinds does C++11 support, and how are we looking at rounding it out in C++1y?

The answers all matter to you – even the ones not yet in the C++ standard – because they are real, available in shipping products, and affect how you design your software today.


Channel 9 has just posted a video of Andrei Alexandrescu’s “Systematic Error Handling in C++11” presented at C++ and Beyond 2012 last summer in Asheville, NC. Here’s the link: Systematic Error Handling in C++11.


Here is the abstract:

Writing code that is resilient upon errors (API failures, exceptions, invalid memory access, and more) has always been a pain point in all languages. This being still largely an unsolved (and actually rather loosely-defined) problem, C++11 makes no claim of having solved it. However, C++11 is a more expressive language, and as always more expressive features can be put to good use toward devising better error-safe idioms and libraries.

This talk is a thorough visit through error resilience and how to achieve it in C++11. After a working definition, we go through a number of approaches and techniques, starting from the simplest and going all the way to file systems, storage with different performance and error profiles (think HDD vs. RAID vs. Flash vs. NAS), and more. As always, scaling up from in-process to inter-process to cross-machine to cross-datacenter entails different notions of correctness and resilience and different ways of achieving such.

To quote a classic, “one more thing”! An old acquaintance—ScopeGuard—will be present, with the note that ScopeGuard11 is much better (and much faster) than its former self.


Microsoft’s Channel 9 just published the video of my C&B 2012 presentation on universal references. There’s also a link there to the presentation materials in PowerPoint format. (I generally make my presentation materials available only in PDF, but this talk has some animations that end up with some text on top of other text, so I decided to release the PowerPoint version.)

ACCU’s Overload also just published a written version of the same information, so you now have three choices for accessing this content:




I think the distinction between rvalue references and universal references is important, and I would like to see the term “universal reference” become de facto standard, so I encourage you to promote this talk, these presentation materials, and this article as widely as you can.



Microsoft’s Channel 9 just posted their first video from C++ and Beyond 2012: Alexandrescu, Meyers, Sutter: On Static If, C++11 in 2012, Modern Libraries, and Metaprogramming


At the end of day two, Charles Torre conducted an interview with Scott Meyers, Herb Sutter, and Andrei Alexandrescu that included a discussion of various modern C++ topics as well as Q&A from online readers.

So even if you attended C&B in Asheville, it’s something you have not seen, enjoy!


Next Page »