Очень навряд ли :) В его версии это звучало примерно так: «По закону Либерти разработка программы занимает всегда больше изначально предполагаемого времени, даже если сделать поправку на закон Либерти».
В любом случае, с таким-то названием книги это звучит достаточно иронично.
Всё это мне напоминает времена, когда люди ругались на новый вид Главного меню и голубые окошки в винде, начиная с Windows XP, потом на Aero в Windows Vista, потом на новый таскбар в Windows 7, а сейчас на Metro в грядущей Windows 8. Тоже были туевы хучи статей негодования и т.п. (и не удивительно, ведь, как известно, людям присущ консерватизм — кому-то больше, кому-то меньше).
Я конечно польщён, что моя статья про лямбды натолкнула Вас на такую идею, однако, интуиция мне подсказывает, что можно было всё это сделать проще.
Я правильно понял, что Вы создаёте статическое хранилище функций, которое заполняете в рантайме? о_О Причём, коллекция только заполняется — из неё ничего не удаляется.
Значит, если я создам в своей программе 500 функций, то там будет как минимум 500 объектов (на самом деле больше, т.к. при композиции создаются дополнительные объекты func_t), причём удалятся они только при завершении работы программы.
Как минимум, неплохо бы заменить std::vector<> на std::list<>, а в класс добавить счётчик ссылок, чтобы ненужные функции оттуда удалялись, когда они становятся ненужными.
А вообще, не могли бы Вы ещё раз объяснить (желательно на примере кода) вот этот абзац, ибо мне кажется, я чего-то не уловил:
Скажем, мы хотим, чтобы некая процедура принимала пару функций A и B и возвращала новое выражение, например, 5A + B. Наша процедура создаст лямбду 5A, затем создаст 5A + B, используя 5А и В. Полученное процедура вернет и завершится, в этот момент лямбда 5А пропадет из области видимости и возвращенное выражение попросту не будет работать.
Про move-конструкторы я думал, и это, пожалуй, приоритет номер один на данный момент. Но описание способа передачи данных — это спорно очень, ибо сильно снижает читабельность. Хотя может можно как-то извратиться приемлемо. В любом случае, я не предлагаю использовать то, что я написал, в требовательных к ресурсам системах. Я вообще не предлагаю это использовать :)
В любом случае, с таким-то названием книги это звучит достаточно иронично.
А мне все эти изменения по душе.
[=]
вместо[&]
и всё будет работать.list<>
. Это я провтычил, но ничего от этого не меняется.Я правильно понял, что Вы создаёте статическое хранилище функций, которое заполняете в рантайме? о_О Причём, коллекция только заполняется — из неё ничего не удаляется.
Значит, если я создам в своей программе 500 функций, то там будет как минимум 500 объектов (на самом деле больше, т.к. при композиции создаются дополнительные объекты
func_t
), причём удалятся они только при завершении работы программы.Как минимум, неплохо бы заменить
std::vector<>
наstd::list<>
, а в класс добавить счётчик ссылок, чтобы ненужные функции оттуда удалялись, когда они становятся ненужными.А вообще, не могли бы Вы ещё раз объяснить (желательно на примере кода) вот этот абзац, ибо мне кажется, я чего-то не уловил: