Re[4]: lambda являются first class citizens?
От: kov_serg Россия  
Дата: 06.05.18 10:33
Оценка: -1 :)
Здравствуйте, Alexander G, Вы писали:

AG>Здравствуйте, kov_serg, Вы писали:


_>>Если да то как массив например их 3 таких лямбд задать?


AG>А в чём проблема?

AG>
AG>int main(void) {
AG>    auto x = []{ std::cout <<"hi\n"; };
AG>    decltype(x) y[] = {x, x, x};
AG>    y[1]();
AG>    return 0;
AG>}
AG>

Проблема в том что для first class citizen такой проблемы не должно быть
auto x=[]{ std::cout<<"x\n"; };
auto y=[]{ std::cout<<"y\n"; };
auto z=[]{ std::cout<<"z\n"; };
typedef decltype(x) t;
void foo(t); foo(x); foo(y); foo(z);
t a[]={x,y,z};

В C++ стараются сделать костылями. Именно это печалит. Что указатели на члены класса что лямбды. А перегружаемые функции с лямбдами. А если вируальную функцию захочеться? В результате таких нововедений растёт только сложность и энтропия и вместо упрощения получаем новые проблемы.
Так что это не "first class citizen" это "crutch class outlander".
Отредактировано 06.05.2018 10:36 kov_serg . Предыдущая версия . Еще …
Отредактировано 06.05.2018 10:34 kov_serg . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.