Ответ 1
Как вы сказали в вопросе, boost 1.48 представил boost::move
, библиотеку, которая эмулирует семантику перемещения с С++ 03. Это было разработано Ион Газтанага, который также (главным образом) писал и в настоящее время поддерживает boost::intrusive
и boost::container
.
Как наследование, так и поддержка контейнера перемещают семантику - на самом деле boost::intrusive
должна поддерживать семантику перемещения для boost::container
to, потому что boost::container
- это в основном куча неинтрузивных контейнеров, реализованных путем обертки их копий boost::intrusive
. Мне кажется, что интрузивные/контейнеры были мотивацией для написания boost::move
, поэтому неудивительно, что у них есть голова на остальной основе.
Но он импортирует, чтобы отметить здесь, что нет дорожной карты повышения или комитета - boost - это всего лишь коллекция библиотек, которые распространяют дистрибутив, веб-сайт и процесс проверки/контроля качества. Вы должны рассматривать каждую библиотеку как отдельный проект, который будет обновляться только в том случае, если авторы/сопровождающие лица заинтересованы в выполнении работы (или, конечно, когда вы отправляете им патч!).
Повышение 1.48/1.49/1.50/1.51/1.52 примечания к выпуску - лучшее место для поиска твердых ответов:
- Boost.Interprocess имеет поддержку с 1.45, как С++ 11, так и С++ 03. До 1.48 это содержало код, который стал boost.move.
- Boost.Asio имеет поддержку с 1.47; нет эмуляции в С++ 03
- Boost.Intrusive получил поддержку через boost.move в 1.48 (С++ 11, С++ 03)
- Boost.Container был новым в 1.48 с поддержкой через boost.move(С++ 11, С++ 03)
- Boost.Icl получил поддержку через boost.move в 1.49 (С++ 11, С++ 03)
- Boost.Unordered получил поддержку через boost.move в 1.49 (С++ 11, с
#define
, чтобы включить эмуляцию в С++ 03) - Boost.Thread поддерживает эмуляцию С++ 03 с boost.move с 1.50, более старые версии поддерживают только С++ 11
- Boost.Function добавлена поддержка только С++ 11 в 1.52