C++ Spring: GoingNative, Feb 2-3, 2012

I’m very pleased to announce the C++ event of the first half of 2012: GoingNative 2012, to be held on February 2-3 in Redmond, WA, USA. (C++ and Beyond will also be great, but won’t be till the second half of the year – and there are other C++ conferences/events coming too. I can’t remember a year with this many C++ conferences since, oh, about 1999.)

This is Microsoft’s first native-code-only developer event in years, and it’s not limited to Microsoft products or technologies – it’s about ISO C++ on all platforms. We’re taking the initiative to put on this event because we know that there’s a huge demand for information about the new ISO C++11 standard, but that information is still really hard to come by – the standard was just published last month, none of the major books has been updated yet to reflect it, and high-quality public information is just starting to trickle out (I’m trying to do my part too).

So we decided to try to do our bit to help generate that information and make it available as widely as possible – by inviting many of the world’s top C++ speakers, charging in-person attendees basically just enough to cover costs, and making the whole thing available on the web for free, live and on-demand, for everyone in the world who is interested in ISO C++.

The goal is to promote portable ISO C++ in all its modern C++11 glory – clean, safe, and fast – as clean and safe as code written in any other modern language. As someone famous put it:

“C++11 feels like a new language.” – Bjarne Stroustrup

He’s right, and we’re all still learning it and figuring it out – that includes the world’s top experts, who are busily documenting the modern best practices for this grand new language. We hope this event might help us all take a step forward on that path.

Key points about GoingNative:

  • It’s focused on ISO C++: Two jam-packed days about C++ on all platforms. There will be material about Microsoft tools too, but also about other technologies with speakers like Andrei Alexandrescu of Facebook, and an overall emphasis on portable C++ code and the power and simplicity of the new ISO C++11 standard just published last month.
  • It’s top quality: Many of the world’s top C++ speakers will be there, starting with Bjarne Stroustrup’s opening keynote.
  • It’s affordable: $112 to attend the entire event in person, which has got to make this about the cheapest technical conference anywhere, and free on the web both live and on demand.
  • Oh, and there’s a party. That’s included in the $112, not an extra bag-check-style fee.

Here are my personal suggestions for how you might enjoy what we hope will be a trove of accessible C++ information:

  • Consider coming in person (but register early). If you or your group want to be there in the building, the good news is that they got the biggest room on the Microsoft campus and it can hold about 350 people. The bad news is that it can hold only about 350 people, and at this price and with all of the interest in C++11, I personally expect to see that sell out well before the conference begins.
  • Consider making it a party at your own company. Clear your team’s schedule for two days, book your company’s biggest conference room with the biggest projector system (or a nearby hotel meeting room), and watch live over the Internet on the big screen. Bring chips and pop and beer. Cater lunch. This can be your team event. Think of it as your team’s own technical Super Bowl party (and a good warmup for the Super Bowl itself two days later).
  • Consider using the material for a brownbag series. If clearing your team’s schedule for two solid days to watch it live is too hard, just use the fact that we’re making it available for free on demand – get together to watch it one talk at a time over a series of team lunch events in the weeks and months to follow. Make it a C++ Spring. Each event could be anything from a Tuesday brownbag to a Friday afternoon party – together with your colleagues and special party guests like Bjarne.
  • Or something else. We’re just making the information available; how you use it is up to you. We just hope that lots of people do find it useful.

I hope to see or e-see you there.

Pasting from the announcement:

GoingNative 2012

We know developers are hungry for information about C++11. The GoingNative conference aims to provide current technical information to as many people as possible.

Register now!

GoingNative 2012 is a 48 hour technical event for those who push the boundaries of general purpose computing by exploiting the true capabilities of the underlying machine: C++ developers. Distinguished speakers include the creator of C++, Bjarne Stroustrup; C++ standards committee chair, Herb Sutter; C++ template and big compute master, Andrei Alexandrescu; STL master Stephan T. Lavavej; and more! Official agenda will be be released over the next month or so. Join us!

Event Details:

Feb 2-3, 2012
Microsoft Corporate Campus
Building 33
Redmond, WA, USA

Streamed live (on-demand < 24 hours later, each day) right here.
Evening event (party – great food(dinner), music, drink and people!)
Shuttles from Bellevue’s Lincoln Square (where we recommend booking your hotel)
Hurry up and reserve your spot. Come meet some of your heroes. Engage with your peers. This is going to rock and roll, C++ style!

GotW #101: Compilation Firewalls, Part 2 (Difficulty: 8/10)

GotW #100 demonstrated the best way to express the Pimpl idiom using only standard C++11 features:

// in header file
class widget {
    class impl;
    unique_ptr<impl> pimpl;

// in implementation file
class widget::impl {
    // :::

widget::widget() : pimpl{ new impl{ /*...*/ } } { }
widget::~widget() { }                   // or =default


Guru Question

Is it possible to make the widget code easier to write by wrapping the Pimpl pattern in some sort of library helper? If so, how?

Try to make the widget code as convenient and concise as possible to write, with any compiler-generated semantics either correct by default or producing compile-time errors if the widget author forgets to write them.


[Update: Removed move operations from the basic pattern. Since not all Pimpl’d types need to be move-aware, it’s not really part of the core pattern.]

GotW #100: Compilation Firewalls


JG Questions

1. What is the Pimpl Idiom, and why is it useful?

Guru Questions

2. What is the best way to express the basic Pimpl Idiom in C++11?

3. What parts of the class should go into the impl object? Some potential options include:

  • put all private data (but not functions) into impl;
  • put all private members into impl;
  • put all private and protected members into impl;
  • put all private nonvirtual members into impl;
  • put everything into impl, and write the public class itself as only the public interface, each implemented as a simple forwarding function (a handle/body variant).

What are the advantages/drawbacks of each? How would you choose among them?

4. Does the impl require a back pointer to the public object? If yes, what is the best way to provide it? If not, why not?

A Passing of Giants

I don’t normally blog poetry, but the passing of our giants this past month has put me in such a mood.


What is built becomes our future
Hand-constructed, stone by stone
Quarried by our elders’ labors
Fashioned with their strength and bone
Dare to dream, and dare to conquer
Fears by building castles grand
But ne’er forget, and e’er remember
To take a new step we must stand
On the shoulders of our giants
Who, seeing off into the morrow,
Made the dreams of past turn truth —
How their passing is our sorrow.

Scott Meyers’ C++11 Materials: The Best Available Overview of C++11

Scott Meyers Presentation Materials: Overview of the New C++ (C++11)


People keep asking me where to find good information on C++11. Until now I’ve had to point them to blogs, and say that we’re all working on revising our books but it’ll take a while. It’s been an unsatisfying answer.

Finally I have a C++11 “book” I can direct people to: Today Scott Meyers announced that his fully-annotated C++11 training materials are now up-to-date with the final published standard.

This is the best overview of C++11 available today, and it’s good:

Presentation Materials: Overview of the New C++ (C++11)
by Scott Meyers

PDF $29.95

The PDF you’ll get is an exact snapshot of Scott’s full-color training materials on the day he generates the PDF. You’ll get not only the slides Scott shows in class, you’ll also get the accompanying notes—the very ones Scott uses. To see exactly what you’ll get you can view a free sample.

Specification of the new version of C++ (“C++11”) is finally complete, and many compilers (e.g., Visual C++ and Gnu C++) already offer many features from the revised language. And such features! auto-declared variables reduce typing drudgery and syntactic noise; Unicode and threading support address important functionality gaps; and rvalue references and variadic templates facilitate the creation of more efficient, more flexible libraries. The standard library gains resource-managing smart pointers, new containers, additional algorithms, support for regular expressions, and more. Altogether, C++11 offers much more than “old” C++. This intensively technical seminar introduces the most important new features in C++11 and explains how to get the most out of them.

I like Scott’s terms: Free updates for life, including major revisions, so it’ll never be out of date. DRM-free, so that you can copy, annotate, and print as you like.

If you want to know about C++11, invest the $30. You won’t regret it.

Disclaimer: I have no financial interest in recommending Scott’s materials. I just think they’re excellent and everyone should know about them.