LINUX.ORG.RU

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

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

// замыкания a1 и a2 на стеке, но никаких адресов в списке параметров нет a1 = gen(1); a2 = gen(2);

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

тогда транслируя выражение a1 = gen(1); компилятор (например) создаст «отложенный вызов» вида gen(1), и свяжет его с именем a1, у этот вызов будет делать везде, где будет вызов a1().

сразу скажем, что работать это будет нормально пока не будет возможность в языке переприсвоить a1 чем-то другим. поскольку статический анализ не наш путь, придется делать функторы какие-нить.

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

// замыкания a1 и a2 на стеке, но никаких адресов в списке параметров нет a1 = gen(1); a2 = gen(2);

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

тогда транслируя выражение a1 = gen(1); компилятор (например) создаст «отложенный вызов» вида gen(1), и свяжет его с именем a1, у этот вызов будет делать везде, где будет вызов a1().