July 2010

I view move semantics as the marquee feature of C++0x.  Use of and control over move semantics is as central to C++0x as is use of and control over copy semantics in “old” C++ (i.e., C++98/C++03).

The implementation of move semantics relies on rvalue references, so this session would really be about both move semantics and rvalue references.  Even if you’ve been casting an eye towards C++0x developments for the last couple of years and are familiar with the basic ideas behind rvalue references and move semantics, you may not be aware that the rules were changed in some fairly significant ways in the last 18 months.  Lvalues may no longer bind to rvalue references, and move constructors and move assignment operators are now “special member functions” (like copy constructors and copy assignment operators) that compilers implicitly generate under suitable circumstances.

What are your feelings about a session devoted to explaining the central role of move semantics and rvalue references in C++0x?


A client recently asked me to look into the availability of tools to help develop multithreaded C++ code, and having now spent some time doing just that, I thought the results might be worthy of a presentation at C&B.

The kinds of tools I investigated can be broadly broken down into correctness tools and performance tools.  Correctness tools help identify errors in multithreaded code that can lead to incorrect behavior.  They look for things like races, deadlocks, livelocks, and incorrect use of threading APIs, e.g., locking one mutex but unlocking another, locking or unlocking a nonrecursive mutex more than once, etc.  Performance tools help identify issues that do or could prevent multithreaded code from scaling as well as it might.  They look for things like false sharing, lock convoying, uneven work distribution across threads, etc.

I mostly limited my focus to learning about correctness tools, but even with that restricted goal I was surprised to find that the landscape is more varied than I’d expected.  There are commercial tools as well as freeware and open source tools.  Some are production-ready, others are still in research labs.  Some are based on static analysis, some on dynamic analysis.  Of the dynamic analysis tools, some give on-the-fly results, others display results only after the program being examined has stopped running.   Among the tools that detect potential or actual data races, the approaches and algorithms vary considerably, as do their corresponding pros and cons.   If you want to get an overview of your options, there’s a fair amount of information to absorb.

My research doesn’t make me an expert in these tools, it simply makes me somewhat informed.  Furthermore, I haven’t even run any of these tools — I’ve simply read about them.  Still, my thinking is that an overview of what’s available, how they do what they do, and the associated advantages and disadvantages could be useful, and it could also act as the foundation for ongoing informal discussions and experience reports.  But maybe I’m deceiving myself.  Maybe the topic isn’t as interesting or useful as I think it might be.

What do you think?  Do you think an overview of existing tools to help detect correctness problems in multithreaded C++ code would be a valuable addition to C&B?


Although C&B is sold out, we are taking names on a waiting list to replace any who may encounter unforeseen situations and can’t attend. Here’s how the waiting list works, so you know the mechanics and some of the constraints we’re under:

  • Acknowledgment page (immediate): When you sign up to the waitlist, you’ll see an acknowledgment page confirming that you’re on the list and that if a ticket becomes available you will be contacted automatically with further instructions on how to purchase your ticket.
  • Acknowledgment email (soon): Unfortunately, EventBrite does not allow us to also automatically send you an email confirmation in addition to the note on the web page you see after registering for the list, but we will try to send you one manually within a few days. EventBrite also does not have a way for us to be notified as new people are added to the list, so the registrar is going to try to check every few days for newly waitlisted people and generate the emails.

At any time, you can always send email to [email protected] if you have questions while you’re waiting. When a spot opens up, the next person in the waiting list will get a notification email that they have a limited time to sign up. If they don’t sign up in that time, we’ll contact the next person in line.

Thanks for your interest in C&B, and we’re looking forward to seeing many of you this October.

C++ & Beyond 2010 is now fully booked, but we’ve started a waiting list for people who’d like to attend if spots open up when people who’ve registered have to cancel.   This has already happened once, and given that there are still three months before C&B begins, I expect it will happen a few more times, too.

To get on the waiting list, go to the C&B Registration Page and click on the bright orange “Add Me to the Waitlist” button beneath the Ticket Information section.

To everyone who has registered, thank you, because we very much value your support.   Keep your eyes on this blog, because we’ll continue to use it to post prospective sessions topics and otherwise communicate about C&B.  If you have comments about things we could do to make C&B a success for you, please don’t be shy about posting them!


We’re down to 10 remaining slots for C++ & Beyond, so if you’ve been dilly-dallying about whether to attend or have been postponing the administrative paperwork needed to sign up, now would be a good time to make a firm decision or to kneel at the alter of bureaucracy.  Once again I’ll remind you that when we sell out at 60, we’re sold out:  the number of slots cannot and will not be increased.

Once we sell out, we’ll set up a waiting list, in case there are cancellations, but really, wouldn’t you rather be on the attendee list than the waiting list?

I’ve configured the C&B Registration Page to show the number of remaining tickets, so if you want to see how many slots remain as we count down to a sold-out event, you can find out there.