Coding
C++ Internals

Rule of Five Audit

Premium
Difficulty

Asked at DRW, Da Vinci Derivatives

Theory: C++ Internals

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.

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

xxxxxxxxx xxxxxxxxxx xxxx xxx xxxxxxxx xxxxxxxxxxxx xxxxxx xxx:

  • xxx xxxxxxx xxxxxxxxxxx xxxxxxxx x xxxxxx xxxx xxxx_x().
  • xxx xxxxxxxxxx xxxxxxxx xx xxxx xxxxx_x(xx), xxxxxxx xxxx, xxx xxxx xx xxx xxxxxx xxxxx xxxx x xxxxxx.
  • xxxx xxxxxxxxxxx xxx xxxx xxxxxxxxxx xxxx xxx xxxxxxx (xxxxxx xxxx): xxx xxxxxx xx xxx xxxxxx xxxxx xxxx x xxxxxx xxxxx.
  • xxx xxxx xxxxxxxxxxx xxxxxxxxx xxxxxxxxx xxx xxxxxx xxx xxxxxx xxxxx (xxxxx() == xxxxx, xx() == -x), xxxxxxx xxxxxxx.
  • xxxx xxxxxxxxxx xxxxx xxxxxx xxx xxx xxxxxx (xx xxx), xxxx xxxxx xxx xxxxxx'x. x = xxx::xxxx(x) xxxx xxxxx x xxxxxxxxx.
  • xxxx xxxx xxxxxxxxxx xxxx xx xxxxxxxx. xxxx xx xxx x xxxxx xxxxx: xxx::xxxxxx xxxx xxxxx xxxxxxxx xxxxxx xxxxxxxxxxxx xxxx xxx xxxx xxxxxxxxxxx xx xxxxxxxx (xxxxxxxxx xx xxxxxx xxx xxx xxxxxx xxxxxxxxx xxxxxxxxx), xxx x xxxxxx xxxx xxxxxx xxx::xx_xxxxxxx_xxxx_xxxxxxxxxxxxx_x<xxxxxxxxxx>.
  • xxxx xx() xxx xxxxx() xx xxxxx; xx xxxxx xxxxxx xx xxxxxxxxxxx xx -x.

xxx xxxxxxxxxxxxxxx xxxxxx xxxxx(), xxxxxx() xxx xxx_xxxxxx() (x xxxxx xx xxxxxxxxx xxx xxxxxxxxx xxxx, xxxxxxxxx -x). xxxxxxx xxxx xxxxx xxxxxxxx x xxx xxxxx, xxx xxxxx xxxx xx xxxxxxx xx xxxxxxx xxx xxxxx xx xxx xxxx xxx xxxxx xxxx xxx xx xxxxx.

xxxxxxxx

[]{ xxxxx_xxxxxxxx(); { xxxxxxxxxx x; xxxxxxxxxx x; } xxxxxx xxx::xxxxx<xxxx xxxx, xxxx xxxx, xxxx xxxx>(xxxxx(), xxxxxx(), xxx_xxxxxx()); }()
// (x, x, x)  (xxx xxxxxxx xxxxxx, xxx xxxxxx, xx xxxxxx xxxxxx)

[]{ xxxxx_xxxxxxxx(); xxx::xxxxxx<xxxx xxxx> xxx; { xxxxxxxxxx x; xxx xxxxxxxx = x.xx(); xxxxxxxxxx x = xxx::xxxx(x); xxx.xxxx_xxxx(x.xx() == xxxxxxxx ? x : x); xxx.xxxx_xxxx(x.xxxxx() ? x : x); xxx.xxxx_xxxx(xxxxxx()); } xxx.xxxx_xxxx(xxxxx()); xxx.xxxx_xxxx(xxxxxx()); xxx.xxxx_xxxx(xxx_xxxxxx()); xxxxxx xxx; }()
// [x, x, x, x, x, x]  (xxx xxxx xxxxxxxxx xxx xx, xxxxxxx xxx xxxxxx, xxxxxx xxxxxxx)

xxxxxxxxxxx

  • xx xxx xxxxxx xxx xxxxxxxxxxx xxxxxxxxxxxxxxx.
  • xxxxxxx xxx xxxxxxx xxxx xxxxxxx xxxx_x() / xxxxx_x().
  • xxxxxx xxxxx xxxxx xxxx xxxxxxxxxx, xxxx-xxxx, xxx x xxx::xxxxxx<xxxxxxxxxx> xxxxxxx xxxxxxxx xxxxxxxxxxxxx (xxx xxxxxxxx), xxxx xxxxx xxx xxxxxxxx xxx xxx xxxx xxxxxx.

This problem is only available to subscribers.

Language: C++FileHandle
Sample tests

Unlock the problem to run it against the tests.