Coding
C++ Internals

Scope Guard

Premium
Difficulty

Read the problem, hints and solution here. The editor needs a bigger screen: open this page on a laptop to write and run your code.

xxxxxxxxx xxxxxxxxxx, x xxxxx xxxx xxxxx x xxxxxxxx xxx xxxxx xx xxxx xxxx xxx xxxxx xxxxxx xxx xxxxx. xx xxxxxxx() xxx xxxxxx xxxxx, xxx xxxxx xxxxx xxxxxxx.

x xxxxxxx xxxxxx xxxxx xxx xx xxxx x xxxx xxxx x xxxxx xxxx xxxxx: xxxxxxx x xxxxxxxx xxxxxx xx xxxx xxxxx, xxxxxx x xxxxx, xxx xx xxxxx xx xxxx xx xxx xxxx. x xxxxx xxxxx xxxxx xxx xxxx xxxxxxxxx. xxx xxxxx xxx xxxxxxx xxxx xx xxx xxxx xx xxxxxx, xxx xxxx xxxxxxxxxx xxxxxxxx xxx xxxx xxxxxxx().

xxxxxxxx <xxxxxxxx x>
xxxxx xxxxxxxxxx {
xxxxxx:
    xxxxxxxx xxxxxxxxxx(x xxxxxxx);
    ~xxxxxxxxxx();      // xxxxx xxxxxxx xxxxxx xxxxxxxxx
    xxxx xxxxxxx();     // xxx xxxxx xxxx xxx xxxx xxxxxxx
    // x xxxxx xxxxxx xx xxxxxx
};

xxxx xx xxxx: x xxxxxxxxxx xxxx xxxxxxxx xx xxxxxx xxxxxx xxx xxxxx, xx xxx xxxxxxx xxxxx, xx x xxxxxx, xx xxxxx xx xxxxxxxxx xxxxxx xxxxxxx. xx xxxxxxx xx x xxxxxxxxxx xxxxxx xx xxxxxxx xx xxxxxxxx.

{
    xxx::xxxxxx xxxx = "xxxxx";
}   // xxx xxxxxxxxxx xx xxxx xxxx xxxx xxx xxxxx xxx xxxxxx

xxxxxxxxxx xx x xxxxxxxx xxxx xxx xxxxxxxx'x xxxx x, xxxxxxx xxxxx xxxxxx xxx xxx xxx xxxx. xxxxx x++xx xxx xxxxxxxx xxxxxxx x xxxx xxx xxxxxxxxxxx xxxxxxxx, xx xxx xxxxx xxxxxxxxxx xxxxx(xxxxxxx); xxxx xx xxxxx xxxxxxxx.

x xxxxx xxxx xxx xx xxxxxxxx. x xxxx xxxxx xxxx xxx xxxx xxxxxxx, xxx xxx xxxxxxx xxxxx xxxx xxx xxxxx. xxxxx = xxxxxx xx xxx xxxx xxxxxxxxxxx xxx xxx xxxx xxxxxxxxxx xxxxxxxx xx xxxxxx xxxx.

xxx xxxxxxxx xxxxxxxx x xxxxxx xxxxxxx, xxxxxxx_xxxxx, xxxx xxx xxxxx xxx xx xxxxx xxx xxxx xxxxx x xxxxxxx xxx.

xxxxxxxx

xxxxxxx_xxxxx = x;
xxxx xxxxx = [] { ++xxxxxxx_xxxxx; };
{
    xxxxxxxxxx xxxxx(xxxxx);
}
// xxxxxxx_xxxxx == x  (xxx xxxxx xxxx xxx xxxxx)

{
    xxxxxxxxxx xxxx(xxxxx);
    xxxxxxxxxx xxxxxxx(xxxxx);
    xxxxxxx.xxxxxxx();
}
// xxxxxxx_xxxxx == x  (xxxx xxxx xxx xxx xxxxxxx)

xxxxxxxxxxx

  • xxx xxxxxxx xxxx xx xxxx xxxx xxx xxxxx.
  • xxxxxxx() xxx xx xxxxxx xxxx xxxx xxxx. xx xx xxxxxxxx.
  • xxx xxxxxxx xxxx xxx xxxxx.
  • xxxxxxx x xxxxx xxxx xxx xxxxxxx. xxx xxxxx xxxxx xxxx xxxx xxx::xx_xxxx_xxxxxxxxxxxxx_x.

This problem is only available to subscribers.

Language: C++23ScopeGuard

Unlock the problem to run it against the tests.