Идеи для<BOOST_FOREACH
>зародились в группе Visual C++ в Microsoft на ранних этапах разработки C++/CLI. Вопрос о том, следует ли добавить специальную конструкцию «научной» петли в язык, был открытым в то время. В качестве умственного упражнения Энсон Цао разослал некий код доказательства концепции, который продемонстрировал, что чистое библиотечное решение может быть возможным. Код был написан на предложенном тогда диалекте C++/CLI, для которого ещё не было компилятора. Я был заинтригован этой возможностью и перенес его код на управляемый C++, чтобы он работал. Мы работали вместе, чтобы усовершенствовать идею и в конечном итоге опубликовали статью об этом в ноябрьском выпуске 2003 годаCUJ.
После ухода из Microsoft я пересмотрел идею петлевой конструкции. Я реализовывал макрос с нуля в стандартном C++, исправлял некоторые недостатки версии CUJ и переименовывал ее<BOOST_FOREACH
>. В октябре 2003 года я начал дискуссию об этом в списке разработчиков Boost, где он встретился с теплым приемом. Я оставил этот вопрос до декабря 2004 года, когда я снова реализовал<BOOST_FOREACH
>. Новая версия оценивала экспрессию последовательности только один раз и правильно обрабатывала как lvalue, так и rvalue. Он был построен поверх недавно принятого. Диапазонбиблиотеки, что повысило её портативность. Это была версия, которую 12 декабря 2004 года я, наконец, представил на рассмотрение Boost. Он был принят в Boost 5 мая 2005 года.
Спасибо Энсону Цао из Microsoft за то, что он придумал эту идею и продемонстрировал ее осуществимость. Я также хотел бы поблагодаритьТорстен Оттосензаповышение. Диапазонбиблиотеки, на котором построена текущая версия<BOOST_FOREACH
>. Наконец, я хотел бы поблагодарить Рассела Хинда, Алисдера Мередит и Стефана Слапету за их помощь в портировании на различные компиляторы.
Для получения дополнительной информации о том, как<BOOST_FOREACH
>работает, вы можете обратиться к статье& #8220;Условная любовь& #8221;в. Источник C++.