Re[3]: Boost.Phoenix
От: PM  
Дата: 29.12.14 16:28
Оценка:
Здравствуйте, x-code, Вы писали:

XC>Вот, в документации к бусту тоже несколько раз упоминается что Phoenix это какой-то "шаг вперед" по сравнению с лямбдами и функицональными объектами. А в чем он, этот шаг? Я не то чтобы использовать ее хочу, а скорее понять мысли разработчиков. Может быть есть таки что-то такое еше более высокого уровня чем лямбды, чего я не понимаю?


Могу предположить, что более 10 лет назад, когда создавались boost.phoenix, boost.lambda это был шаг вперед по сравнению с определением функциональных объектов. Я думаю, что с появлением поддержки C++11 в популярных компиляторах, часть библиотек в Boost утратили свою актуальность (smart_ptr, regex, tuple, thread) и то же относится к boost.phoenix, boost.lambda.

PM>>

In functional programming, functions are objects and can be processed like objects. With Boost.Phoenix, it is possible for a function to return another function as a result. It is also possible to pass a function as a parameter to another function. Because functions are objects, it’s possible to distinguish between instantiation and execution. Accessing a function isn’t equal to executing it.


XC>Это же обычный std::function<> тоже умеет? Или нет?


Да, по крайне мере мне хватает встроенных лямбд и std::function для их хранения.

Сегодня вот пришлось воспользоваться std::bind чтобы захватить в лямбде std::unique_ptr, но с выходом С++14 потребность в std::bind отпадет: http://stackoverflow.com/questions/8640393/move-capture-in-lambda
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.