We were lucky enough to start a new project ~1 year ago - completely in C++11. We make heavy use of all the new fun C++11 stuff like lambdas, move constructors (yay, no vectors of pointers anymore!) and all that auto/decltype syntactic sugar.
And I must say: It's a whole different programming language and a new level of productivity.
Depending on move constructors scare the bajeezus out of me because I have no way of knowing if it's working properly. It's behavior is also implementation specific. Given the following test you'll get a variety of results depending on your platform.
struct Foo{...}
std::vector<Foo> vec;
for( int i = 0; i < 10; ++i) { vec.push_back( Foo() ); }
* Compilers are introducing move as we move in C++11. If you compile your code in C++03 (or a compiler with partial C++11 support, no move).
* The standard doesn't place a strict definition on how vectors are increased in size as you push_back. Of course, if you want to control the amount of space in a vector manually, rather than let your compiler decide, you can reserve in advance.
Is your problem just with moving to C++11, or do you get different numbers (other than different numbers of moves) in a compiler with proper C++11 support (basically, the most recent version of everything).
At this point assuming your team makeup hasn't changed much, have you been able to generate any intesting metrics to guage the increase in productivity?
Also what compiler did you feel comfortable picking a year ago to base a production development effort on?
And I must say: It's a whole different programming language and a new level of productivity.