LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

«замыкание» это по жизни обычная функция со автоматически сгенеренным внутренним именем и скрытыми переменными куда подсовываются «захваченные» переменные при ее вызове, если они указаны.

то есть если в плюсах написать

void ff(){
  int x=0;
  auto my_closure = [x]()->int {
    return x;
  }
  int y = my_closure();
}

это равносильно такой записи…

int hidden_func_kinda_closure (int fx){ return fx;}

void ff(){
  int x=0;
  int y = hidden_func_kinda_closure(x);
}

то есть замыкания - в чистом виде синтаксический сахар, позволяющий не писать в явном виде внешнюю функцию. а писать ее локально и даже внутри выражений.

то есть в асмовом выхлопе вы даже не отличите первый вариант от второго.

Исправление alysnix, :

«замыкание» это по жизни обычная функция со автоматически сгенеренным внутренним именем и скрытыми переменными куда подсовываются «захваченные» переменные при ее вызове, если они указаны.

то есть если в плюсах написать

void ff(){
  int x=0;
  auto my_closure = [x]()->int {
    return x;
  }
  int y = my_closure();
}

это равносильно такой записи…

int hidden_func_kinda_closure (int fx){ return fx;}

void ff(){
  int x=0;
  int y = hidden_func(x);
}

то есть замыкания - в чистом виде синтаксический сахар, позволяющий не писать в явном виде внешнюю функцию. а писать ее локально и даже внутри выражений.

то есть в асмовом выхлопе вы даже не отличите первый вариант от второго.

Исходная версия alysnix, :

«замыкание» это по жизни обычная функция со автоматически сгенеренным внутренним именем и скрытыми переменными куда подсовываются «захваченные» переменные при ее вызове, если они указаны.

то есть если в плюсах написать

void ff(){
  int x;
  auto my_closure = [x]()->int {
    return x;
  }
  int y = my_closure();
}

это равносильно такой записи…

int hidden_func_kinda_closure (int fx){ return fx;}

void ff(){
  int x;
  int y = hidden_func(x);
}

то есть замыкания - в чистом виде синтаксический сахар, позволяющий не писать в явном виде внешнюю функцию. а писать ее локально и даже внутри выражений.

то есть в асмовом выхлопе вы даже не отличите первый вариант от второго.