Coding
C++ Internals

std::function Internals

Premium
Difficulty

Asked at Squarepoint Capital

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.

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

xxxxxxxxx xx<x(xxxx...)>:

  • xxxxxxx: xx xxxxxxxx xxxxxx xx xxxxxxxx = x * xxxxxx(xxxx*) xxxxx, xxxxxxxx xxxxxxx(xxx::xxx_xxxxx_x) (xxxxxxx xx xxx xxxxxxxx). x xxxxxxxx x xxxx xxxxxx(x) <= xxxxxxxx xxx xxxxxxx(x) <= xxxxxxx(xxx::xxx_xxxxx_x) xx xxxxxx xx xxx xxxxxx. xxxxxxxx xxxxxx xxxx xx xxx xxxx, xxxxxxxxx xxxx xxx xxxxxxxx xxxxxxx::xx_xxxxx xxx xxxxxxxx xxxx xxxxxxx::xx_xxxx (xxx xxxxx xxxxxx xxxxx xxxxx, xx x xxxx xxxx xxxxxxx xxxxx xxx xxxxx).
  • xxxxxxxxxxxx xxxx xxx xxxx-xxxxxxxxxxxxx xxxxxxxx: xxxxxxxx xxxxxxxx, xxxxxxxxx xxxxxxx, xxxxxxxx xxxxxxx (xxx xxxxxxxx xx-xxxx xxxxxxxxxxx xxxx xxxx xx xxx xxxx).
  • xxxx: xxxxxx xxx xxxxxx xxxxxxxx (xxxx-xxxxxx xxxxxx xxxxxxxx xxxxx xxx xxxxx; xxxxxx-xxxxxx xxxxxx xxxxxxxx xxxxxxx).
  • xxxx: xxxxx xxxxxxxxx. xxxx-xxxxxx xxxxx xxxxx xxx xxxxxxx; xxxxxx-xxxxxx xxxxx xxxx-xxxxxxxxx xxxx xxx xxxxxxxxxxx xxxxxx. x xxxxx-xxxx xx xx xxxxx.
  • xxxxxxxxxx (xxxx xxx xxxx): xxxxxxxx xxx xxxxxxx xxxxxxxx xxxxx, xxxxxxxxx xxx xxxx xxxxx xx xx xxx xxx.
  • xxxxxxxx xxxxxxxx xxxx(): xxxxxxx xx xxxxx. x xxxxxxx-xxxxxxxxxxx xx xx xxxxx. xxxxxxx xx xxxxx xx xx xxxxxxxxx (xx xxxx xxxx).
  • x xxxxxxxx()(xxxx...): xxxxxxx xxx xxxxxx xxxxxxxx. xx xx xxxxxxxxxxxx xxx-xxxxx xx xxxxxxx xxxxxxx xxxx xxxxxxx xxx xxxxx-xxxxxxxxxx xxx::xxxxxxxx xxxx.

xxxxxxxx

[]{ xx<xxxx xxxx(xxxx xxxx)> xxxxx; xxxx xxx_xxxxx = !xxxxx; xx<xxxx xxxx(xxxx xxxx)> x(+[](xxxx xxxx x) { xxxxxx x * x + x; }); xxxx xxxxxxx = xxxxxx_xxxx<xxxx>(x); xxxxxx xxx::xxxx<xxxx, xxxx xxxx>(xxx_xxxxx && xxxxxxx, x(xx)); }()
// (xxxx, xx)  (xxxxxxxx xxxxxxx xxxxxxx xxx xxxxxxx; xxxxxxx xx xx xxxxx)

[]{ xxxxxxx::xxxxx_xxxxxxxx(); xxxx xxxx xxxx = xxxx; xx<xxxx xxxx(xxxx xxxx)> x([xxxx](xxxx xxxx x) { xxxxxx xxxx + x; }); xxxxxx xxx::xxxxx<xxxx xxxx, xxxx xxxx, xxxx xxxx>(x(x), xxxxxxx::xxxx_xxxxxx(), xxxxxxx::xxxx_xxxxx()); }()
// (xxxx, x, x)  (xx x-xxxx xxxxxxx xxxx xxx xxxxx xxxxxx: xxxx xxxx xxxxxxx)

xxxxxxxxxxx

  • xx xxx xxxxxx xxx xxxxxxx xxxxx xx xxxxxxxxxxx; xx xxx xxxxxx xxxxxxxx xx xxx xxxxxx'x xxxxxxxxx.
  • xxx xxxx xxxxxxx xxx xxxxxxxxx xxxx xxxxxxx xx_xxxxx/xx_xxxx, xxxxxxx xxxx xxx xxxxxx-xx-xxxx xxxxxxxx xxx xxxx.
  • xxxxxx xxxxxxxxx xxxx xxxx xx xx xxxx-xxxxxxxxxxxxx xxx xxxxxxxxx xxxx xxx xxxxxxxxx'x xxxxxxxx xxxxx; xxx xxx xxxxxx xxxxx xxxxx xx xxx xxxxx.
  • xxxxxx xxxxx xxxxx xxxx xxxxxxx xxxxxx xxxxxxxxxxxx, xxxx, xxxx, xxxxxxxxxx xxx xxxxxxxxxxx, xxx xxxxx xxxx xxxxxx xx x xxxxxxxx xxxxxxxx xxxxxxx xxxxxxxxxxxxx.

This problem is only available to subscribers.

Language: C++Fn
Sample tests

Unlock the problem to run it against the tests.