Здравствуйте, SCRABER, Вы писали:
SCR>За boost я схватился только из-за того, чтобы поставить себе цель не составляя дополнительного кода (в виде функциональных объектов) написать одной строкой.
Дело в том, что в отношении boost просто создается иллюзия, что вы пишите одной строкой. На самом деле вы включаете заголвочные файлы, где помещены оопределения множества типов и классов и конструкций, которые по объему значительно превосходят функциональный объект. К тому же не исключено, что вам еще помимо заголовков потребуется подключать библиотеки boost, что сделает ваш проект более громоздким.
SCR>В конце концов каждый должен знать несколько способов решений одной и той же задачи, чтобы в будущем уметь применить свой накопленный опыт.
Здесь я с вами полностью согласен, так как расширение кругозора идет только на пользу.
SCR>Как вы думаете что будет выигрывать по скорости работы лямбда-выражения или функциональный объект ???
Это сложный вопрос, на который я не в состоянии дать однозначный ответт. Так как коомпилятор на самом деле, фактически, за вас создает функциональный объект и может в него включать излишние вещи, как, например, оператор приведения типа к указателю на функцию для оператор-функции, который вам на самом деле в данной конкретной ситуации совсем не нужен.
Здравствуйте, Сыроежка, Вы писали:
С>Здравствуйте, SCRABER, Вы писали:
С>Кстати сказать, если вы хотите попробовать выполнить пример, который я предоставил, то можете воспользоваться онлайновым компилятором!
С>Только вам в моем примере надо исключить первый специфический заголовок компилятора Майкрософт, а функцию main объявить просто, как
С>int main()
Попробовал ваш код на VS 2011 все нормально компилируется.
Спасибо за совет. Буду поподробней изучать лямбда-выражения и их применимость в проектах.
Здравствуйте, Сыроежка, Вы писали:
С>Вот простой пример, скомпилированный с помощью MS VC++ 2010. И мой вам совет на будущее, не используйте boost.
А вот вам мой совет! Не нужно указывать что и кому использовать, хорошим тоном будет предложить разные варианты решения задачи. Человек пусть сам выберет...
"Вот на новом С++ можно написать тоже самое и без буста, потомучто в нем уже встроены базовые лямбды", хрен придерешся
ну и желательно ответ на класическом С++
По поводу того что "не юзайте буст", с одной стороны да с другой нет.
Я например часто встречаю и симетричные случаи когда человек не зная про реализованые вещи в бусте пишет самопальный кривой код. На вопрос почему не буст? ответ, он страшный большой, долго работает и вообще мое компактней и лучше, а эти ошибки я скоро поправлю.
вот такая жизнь.
Ну а про уникомов которые знают буст но не знают С++ это отдельная ветка, кстати эти же люди не могут написать даже Модель для крестиков ноликов, а это уже реальный ппц.
Здравствуйте, Сыроежка, Вы писали:
С>Здравствуйте, Ops, Вы писали:
С>Консервативность часто заканчивается реакционностью! С>Вы даже не заметите, как развитие вашего проекта просто топчется на месте.
Из-за того, что компилятор не поддерживает лямбды
Причем это произошло ровно в день принятия нового стандарта.
Как проект развивался до этого — остается лишь догадываться
Здравствуйте, SCRABER, Вы писали:
SCR>У меня вот это не компилируется ????? SCR>Embarcadero C++ Builder XE2.
Юзай буст и не парься. Буст — это общий знаменатель для компиляторов (в смысле что новые фичи по возможности эмулируются и работают на старых компиляторах, например, BOOST_AUTO), плюс практически все, что было добавлено в стандартную библиотеку в новом стандарте, пришло именно из буста и было в нем доступно уже лет 10 как.
И со следующим стандартом так же будет ,скорее всего.
Так что, изучая буст, в каком-то смысле изучаешь будущий стандарт.
А Сыроежку ты слушай, делая скидку на то, что он Воин Стандарта.
По-сыроежкиному получается, что все эти 10 лет нужно было сосать лапу с убогой стандартной библиотекой С++98, лишь бы не буст.
Этот пример работает как с boost::bind, так и std::bind. Однако ptr_fun объявлена устаревшей. Найти похожее решение, работающее с boost и std без устаревших функций навскидку что-то не получается. Можно вместо ptr_fun забайндить сам bind, но в целом это не срабатывает. Похоже, это не имеет практического смысла, но все равно интересно было бы посмотреть на возможное решение ...