Throwing C++ exceptions across DLL boundaries could also be problematic. Note I say DLL, and accent on Windows, because on other systems more likely one C++ runtime to be used, always dynamically linked (well, there are exceptions like busybox - but they are not even written in C++).
Anyway, in the Windows world - a mix of compilers is the norm, and even the "standard" MSVC compiler differs in how it handles exceptions one version to another.
For example all the team is on VS2010, while I keep VS2005 and VS2008 because I have to compile plugins for Autodesk products released with these compilers (not only for exceptions, but also for RTTI, virtual functions handling, and Runtime overall - for this even "C" would get the blame).
Not C++ compilers tho' - the issue is not the ABI, it's the name mangling. Tho' I believe Clang and GCC have decided to use the same convention, ICC might not have (and that by all accounts is a great compiler).
Anyway, in the Windows world - a mix of compilers is the norm, and even the "standard" MSVC compiler differs in how it handles exceptions one version to another.
For example all the team is on VS2010, while I keep VS2005 and VS2008 because I have to compile plugins for Autodesk products released with these compilers (not only for exceptions, but also for RTTI, virtual functions handling, and Runtime overall - for this even "C" would get the blame).