Thanks. I generally eschew vacuous initializations as being a distraction for the reader. Unfortunately, if an uninitialized case does slip through, it can behave erratically. This is why D does the vacuous initialization for you - it's easier to debug, it doesn't confuse the reader, and the optimizer removes it! It's a win all around. I don't think there's a good answer for this in C++.