Re[3]: Что не так с C++ - компил-таймовый C++
От: graniar  
Дата: 07.12.24 17:39
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Все так, но сапиенсы после классов и шаблонов так и не родили ничего радикального нового, что можно было бы без извращений применять в любом классе задач. Из универсального родили в основном мелочи вроде constexpr/consteval, всякие лямбды/сопрограммы довольно специфичны к задачам, а почти все остальное без извращений не работает.


Вот лямбды, на мой взгляд — самое удобное. Теперь пишу на С с лямбдами.
Полиморфизм — почти сразу ушел в топку.
Какое-то время изгалялся с шаблонами для передачи контекста. Но тоже надоел весь этот оверхед.

А лямбды — где не супер-критично время исполнения (а оно в большинстве мест некритично), позволяют всякие удобства с коллбэками.
Например, вместо извратов с итераторами, можно вызывать коллбэк для всех элементов контейнера.

А с вложенными коллбэками можно еще более интересные штуки делать.

Например:
    Database* CreateDatabase(std::function<void(std::function<void(Table*,const Val* row_vals)>)>);

    //...

    CreateDatabase([&](std::function<void(Table*,const Val* row_vals)> cb){
        cb(tab0,vals00);
        cb(tab1,vals10);
        cb(tab0,vals01);
        //...
    });


Пользователю совершенно не надо париться внутренней структурой Database, он просто вызывает коллбэки в любом порядке для всех записей.

Понятно, что тоже самое можно организовать стандартными средствами С, объявляя кучу глобальных функций — но это неудобно и некрасиво.
Лямбды удобны именно возможностью вставки кода в параметры.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.