#include class foo { int i; public: foo(int i) : i(i) { fprintf(stderr, "constructor 1\n"); } foo() throw(int) : i(1) { fprintf(stderr, "constructor 2\n"); throw(1); } int get() const { return i; } }; static foo o2(2); int main() { int rc; if (o2.get() == 2) fprintf(stderr, "o2 ok\n"); else fprintf(stderr, "o2 failed\n"); try { fprintf(stderr, "creating\n"); foo o; fprintf(stderr, "no throw!\n"); rc = o.get(); } catch (int e) { fprintf(stderr, "caught e=%d\n", e); rc = 0; } return rc; }