Who
Aaron Ballman is a Principal Compiler Engineer for Intel and is the lead maintainer of the Clang open source compiler. He has two decades of experience writing cross-platform frameworks in C/C++, compiler & language design, and software engineering best practices and is currently a voting member of the C (WG14) and C++ (WG21) standards committees.
In case you can't figure it out easily enough, the views expressed here are my personal views and not the views of my employer, my past employers, my future employers, or some random person on the street. Please yell only at me if you disagree with what you read.
Search
Monthly Archives: May 2011
Delegating Constructors
Delegating constructors are one of those minor language features that don’t get a lot of headlines, but make a programmer’s life much easier. It’s not likely something you’ll use on a daily basis, but it is something you will run … Continue reading
Typesafe Enumerations
C++0x has a lot of great new features included in it. However, the “flashier” features like lambda functions have the tendency to overshadow other features. One of those features which I am guessing will be overshadowed is the ability to … Continue reading
Enumerations for Framework Design
As someone who develops cross-platform and cross-language frameworks, a frequent problem I run up against are enumerations. They’re a very handy construct for a framework designer to use because they allow you to logically group related constants together with some … Continue reading
Allocations Are Like a Game of Memory
Think of memory allocations and deallocations like a game of “memory”, where the only correct answer is to exactly match the cards. Failing to do so can lead to memory corruption that can sometimes be tricky to track down. The … Continue reading
Automatic Type Inference
One of the nice new features introduced by C++0x is automatic type inference for declarations. Essentially, it means that the compiler will figure out the declaration type based on information from the right-hand side of the expression. If you come … Continue reading
Lambdas
What is likely to be considered the biggest, sexiest feature of the new C++0x specification goes by many names. Some folks call them “function objects”, others call them “closures”, and still others call them “lambda functions.” Regardless of what you … Continue reading
When Virtual Functions Aren’t Virtual
Let’s take a look at some innocuous-looking code and see if you can spot the bugs. If you can, you’re doing great!
Semantic Whitespace
No, this isn’t a blog posting about Python and its use of whitespace to denote statement blocks. This is actually a post about when whitespace matters in C++. It doesn’t happen particularly often, but whitespace can be important.
Generating a Minidump
Last time, I demonstrated a way to automatically generate a stack crawl to help you debug errors in your application. However, I also mentioned that stack crawls are usually not enough information by themselves. In this post, I am going … Continue reading