Unlike most other languages, for which forgetting to include a finally block to close files is about the worst incorrect thing you can do, there are quite frequently used patterns in C++ that result in exception unsafe code that cannot be made safe in a systematic way. Programmers are entirely correct to treat C++ exceptions with a degree of skepticism given the code they're usually dealing with, and not always knowing how their code will be used.
The good news is that "Constructor does real work" is being increasingly recognized as an antipattern, which is really the biggest of only 2 ways in which exceptions in C++ gain unsafety.