I just went through this cycle. I updated a 2005-era codebase to use auto to declare most iterators:<p><pre><code> for (auto it = foo.begin(); ...
</code></pre>
That was pleasant and easy. Then I got all excited about std::atomic and tried using that in place of my own portable implementation, but it didn't work on OSX so I had to roll back.