Understanding the meaning of '[](){ /* Code */ }' in an argument I have this piece of code from a library and im trying to understand the 3rd argument, I've searched google to the best of my abilities and could not find any tutorials or references in in the C/C++ language about it.
timeOutTask.set(NODE_TIMEOUT, TASK_ONCE, [self = this-&gt;shared_from_this()]() {
    Log(CONNECTION, &quot;Time out reached\n&quot;);
    self-&gt;close();
  });

Specificly im trying to undestand this piece of code that utilizes the above mentioned method.
blinkNoNodes.set(BLINK_PERIOD, (mesh.getNodeList().size() + 1) * 2, []() {
  // If on, switch off, else switch on
  if (onFlag)
    onFlag = false;
  else
    onFlag = true;
  blinkNoNodes.delay(BLINK_DURATION);

  if (blinkNoNodes.isLastIteration()) {
    // Finished blinking. Reset task for next run 
    // blink number of nodes (including this node) times
    blinkNoNodes.setIterations((mesh.getNodeList().size() + 1) * 2);
    // Calculate delay based on current mesh time and BLINK_PERIOD
    // This results in blinks between nodes being synced
    blinkNoNodes.enableDelayed(BLINK_PERIOD - 
        (mesh.getNodeTime() % (BLINK_PERIOD*1000))/1000);
  }
});

My question comes down to what the [](){ /*Code*/ } actually do in an argument of a function?
As KIIV kindly pointed out, it has to do with lambda functions