C++ RAII: Using exceptions to propagate errors upwards into factory functions.