Coding
C++ Internals

std::unique_ptr From Scratch

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 xxxxxxxxx<x, xxxxxxx>, x xxxx-xxxx xxxxxx xxxxxxx: xx xxxxxxxx xxx xxxxxx xxxxxxx xxxx, xxxxx xxxxxxxxx xxxx xxxx xx xxxxx xxxxx, xxx xxxxx xx xxxx xxxxx xxxx x xxx xxxxxxx xxxx xxx xxxxxxx xxxxx xx xxxxx. xxxxx xxx::xxxxxx_xxx xx xxx::xxxxxx_xxx xxxxxx xx xx xxxxxx.

xxx::xxxxxx_xxx xx xxx xxxxxxx xxx xx xxx xxxx xxxxxx xx xxxxxx x++, xxx xxx xxxxxx xx xx xxx xxxxxxx xx xxxx xx xxxxx xxxxxx xxxxxxx. xxxx x xxxxxxxxx xxxxxxx xx xx xxx xxxx xx x xxx xxxxxxx, xxx x xxxxxxxxxxx xx xxx xxxx xxxxxxx xxxx. xxx xxxx xxxxx xxxx xxx xxxxxx xxxxxxxx, xxx xxxx xxxxxxxx xx xxx xxxx xx xxxxxxxxxxx xxxxxxx xx xx.

  • xxxxxxxxxxxxx<x>: xxx xxxxxxx xxxxxxx, xxxxx xxxxx xxxxxx. xx xx xxxxxxxx.
  • xxxxxxxxx(): xxxxx. xxx() xx xxxx.
  • xxxxxxxx xxxxxxxxx(x* xxx): xxxx xxx, xxxx x xxxxxxx-xxxxxxxxxxx xxxxxxx.
  • xxxxxxxxx(x* xxx, xxxxxxx xxxxxxx): xxxx xxx xxx xxxxx xxxx xxxxxxx.
  • xxxx xxxxxxxxxxx xxx xxxx xxxxxxxxxx: xxxxxxx.
  • xxxx xxxxxxxxxxx: xxxxx xxx xxxxxxx xxx xxx xxxxxxx, xxx xxxxxx xxx xxxxxx xxxxx. xx xx xxxxxxxx.
  • xxxx xxxxxxxxxx: xxxxx xxx xxxxxxx xxx xxx xxxxxxx, xxxxxx xxx xxxxxx xxxxx, xxxx xxxxx xxxx xxx xxxxxx xxxxx, xxxx xxx xxxxxx'x xxx xxxxxxx. xx xx xxxxxxxx. xxxx-xxxx xxxxx xxx xxxxxx, xxx xxxx = xxx::xxxx(xxxx->xxxx) xxxx xxxx, xxxx xxxxxx xxx xxxxxx xxxxx xxxxxx xxx xxxxxx xxxx xxxx.
  • ~xxxxxxxxx(): xxxxx xxx xxxxxxx xx xxx xxxxxxx, xxxxxx xxx xxxxxxx xx xxxx.
  • x* xxx() xxxxx, x& xxxxxxxx*() xxxxx, x* xxxxxxxx->() xxxxx, xxxxxxxx xxxxxxxx xxxx() xxxxx.
  • xxxxxxx& xxx_xxxxxxx().
  • x* xxxxxxx(): xxxxx xx xxxxxxxxx xxx xxxxxxx xxx xxxxxxx. xxx xxxxxxx xxxx xxx xxx. xxx xxxxxxxxx xx xxxxx xxxxxxxxxx.
  • xxxx xxxxx(x* xxx = xxxxxxx): xxxxxx xxx, xxxx xxxxx xxx xxxxxxx xx xxx xxx xxxxxxx, xx xxxxx xxx xxx. xxx xxxxx xx xxxx xx xxx xxxxxxxx, xx xx xx xxx xxx::xxxxxx_xxx.

xxx xxxx xx xxxxxxxx:

xxxxxxxxxx
xxxxxxxxx<xxxx xxxx>xxx xxxxxxx
xxxxxxxxx<xxxxxxx, xxxxxxxxxxxx>xxx xxxxxxx
xxxxxxxxx<xxxxxxx, xxxx (*)(xxxxxxx*)>xxx xxxxx: xxx xxxxxxx, xxx xxx xxxxxxxx xx xxxxx
xxxxxxxxx<xxxxxxx, xxxxxxxxxxxxxxx>xxxxx xxxxx: xxx xxxxxxx, xxx xxx xxxxxxx'x xxx xxxxxxx

xxx xxxxxxxx xxxxxxxx xxxxxxx, xxxxx xxxxxx xxx xxxxxxxxxxxxx xxx xxxxxxxxxxxx, xxx xxx xxxxxxx xxxxx xxxxx, xxx xx xxxxxxxxxxxx xxxxxx xxxxxxxx xxx. xxxx xx xxxx xxx xx xxxxxxxx.

xxxxxxxx

xxxxxxx::xxxxx();
{
    xxxxxxxxx<xxxxxxx> x(xxx xxxxxxx(x));
    x->xxxxx;              // x
    xxxxxxx::xxxxxxxxx;    // x
}
xxxxxxx::xxxxxxxxx;        // x: xxxxxxxxx xxxx, xx xxx xxx xx xxx xxxxx

xxxxxxxxx<xxxxxxx> x(xxx xxxxxxx(x));
xxxxxxxxx<xxxxxxx> x(xxx::xxxx(x));
xxxxxx_xxxx<xxxx>(x);      // xxxxx
x->xxxxx;                  // x

xxxxxxxxxxx

  • xx xxxxxxxxxx xx xxxx xxx. x xxxxxxxxx xxxxxxxxx xxxxxxx, xxx xxx xxxxx xxxxx.
  • x xxx xx xxxxxxxxxx xxxx xxxxxxxxx<x> xx xxxxx, xx x xxxx xxx xxxx x xxxxxxxxx xx xxx xxx xxxx. xx xxx xxx xxxxxx(x) xx xxx xxxxx xxxx.
  • xxx xxxxxxx xxx xx x xxxxxxxx xxxxxxx. xx xxx xxxx xx x xxxx xxx xxxxxx xxxxxxx xxxx. xxxx xx xxxxx xxxxxx xx xxx xxxxx.
  • xxx xxxxx xxxx xxxxxxxxx<x[]> xx xxx xxxx xx xxxx xxxxxxx, xxx xxxxxxx xx xxxxxxxxxx xxxx xxxxxxxxx<xxxxxxx> xx xxxxxxxxx<xxxx>.
  • xxxxxx-xxxxxxxx.

This problem is only available to subscribers.

Language: C++23UniquePtr

Unlock the problem to run it against the tests.