Информация об изменениях

Сообщение Re[10]: lambda являются first class citizens? от 14.05.2018 20:10

Изменено 14.05.2018 20:12 kov_serg

Re[10]: lambda являются first class citizens?
Здравствуйте, _NN_, Вы писали:


_NN>Попробуем по порядку.

_NN>

first-class status if it can be passed as a parameter,


_NN>
_NN>#include <iostream>
_NN>#include <memory>
_NN>using namespace std;

_NN>void f(auto) {}

_NN>int main()
_NN>{
_NN>    f([]{});
_NN>}
_NN>

А виртуальную функцию как? А экспортировать эту функцию как, перегдужать как? То что вы привели шаблон, а не функция.

_NN>

returned from a subroutine, or assigned into a variable

_NN>
_NN>#include <iostream>
_NN>#include <memory>
_NN>using namespace std;

_NN>auto f() { return []{return 1;}; } // returned from a subroutine
[c]
auto f(int f) { if (f) return [=]{return f;}; return [=]{return f-1;}; }

И где?


_NN>int main()

_NN>{
_NN> auto l = f(); // assigned into a variable
_NN> return l();
_NN>}
_NN>[/c]
Assigned into variable
 l=f(); l=f(); // не работает


_NN>Приведённые требования выполняются.

и где они выполняются?
Re[10]: lambda являются first class citizens?
Здравствуйте, _NN_, Вы писали:


_NN>Попробуем по порядку.

_NN>

first-class status if it can be passed as a parameter,


_NN>
_NN>#include <iostream>
_NN>#include <memory>
_NN>using namespace std;

_NN>void f(auto) {}

_NN>int main()
_NN>{
_NN>    f([]{});
_NN>}
_NN>

А виртуальную функцию как? А экспортировать эту функцию как, перегружать как? То что вы привели шаблон, а не функция.

_NN>

returned from a subroutine, or assigned into a variable

_NN>
_NN>#include <iostream>
_NN>#include <memory>
_NN>using namespace std;

_NN>auto f() { return []{return 1;}; } // returned from a subroutine

auto f(int f) { if (f) return [=]{return f;}; return [=]{return f-1;}; }

И где?



_NN> auto l = f(); // assigned into a variable

Не объявление константы, а присвоение переменной.
 l=f(); l=f(); // не работает


_NN>Приведённые требования выполняются.

и где они выполняются?