В продолжение
темы про бустАвтор: x-code
Дата: 25.12.14
Изучаю и конспектирую понемногу документацию. Наткнулся на Boost.Phoenix.
И не понимаю, что дает эта библиотека в сравнении с обычными лямбда-функциями, boost.lambda и boost.bind.
"Все есть функции" — ну ОК. Функиональные обертки val и ref — понятно, вместо переменной делается функция которая возвращает эту переменную или ссылку на нее.
"arg" — уже менее понятно. Что за синтаксис
int i=3;
std::cout << arg1(i) << std::endl; // prints 3
и как это увязывается с плейсхолдерами _1 _2 и т.д., при том что утверждается что arg1 и _1 это вроде как одно и то же?
"lazy statements" — вполне понятно, сделали набор функциональных объектов, эмулирующих работу обычных управляющих операторов. С квадратными скобками вместо фигурных красиво получилось

"lazy functions" — вообще непонятно, зачем это и чем обычные функции отличаются от таких?
И в целом вся библиотека для чего?