I'd like to point out that as of version 4.2.0, GCC now supports SRA -- scalar replacement of aggregates. I've been doing some preliminary testing, and seen improvements of up to 30% speed increase for template algorithms that heavily instantiate various simple objects.
Generic programming just got a lot more efficient.
Yet another reason for me to harp my favorite points:
1) Strive to create constructors that have no side effects
2) Hold all data by value whenever possible