We're porting the questions to C++23! Can you help?
You are taking quiz cppquiz.org/q/0i39q. After 0 of 10 questions, you have 0.00 points.
Question #323 Difficulty:
According to the C++17 standard, what is the output of this program?
#include <iostream>
#include <stdexcept>
struct A {
A(char c) : c_(c) {}
~A() { std::cout << c_; }
char c_;
};
struct Y { ~Y() noexcept(false) { throw std::runtime_error(""); } };
A f() {
try {
A a('a');
Y y;
A b('b');
return {'c'};
} catch (...) {
}
return {'d'};
}
int main()
{
f();
}
Hint:
c
is not destroyed as part of the regular exit from the try block, but as part of stack unwinding after the exception gets thrown. When stack unwinding starts, the not-yet-destroyed objects created in the try block are destroyed in the reverse order of their construction.
Mode : Quiz
If you want to quit the current quiz and go back to training mode, click here.