I've had a code base that has evolved over the last seven years. Its been ported to a variety of platforms: Solaris, Linux, Windows, Mac 0S 9, Mac OSX, HP UX and others. For the most part, porting is a breeze.
On the mac I've always used gcc. However, sometimes the standards weenies feel the need to arbitrarily break things that already work. Recently I moved from OSX 10.3 to 10.4 (Tiger). This requires XCode to move to 2.2. This requires gcc 4.0 (for G5 64 bits). This requires fixing stupid, standards committee errors:
The error: 'warning: `typename std::iterator_traits<_Iterator>::value_type' is implicitly a typename'
You can read coherent discriptions here and here.
The reason I bring this up is that my code base supports a language which has maintained full backward compatibility for the last seven years. This is because my customers pay me to use code - standards folks don't have to worry about customers, and, in particular, don't care at all about your customers.