Я хочу переместить мой текущий проект на С++ 11. Код компилируется с помощью clang++ -std = С++ 0x. Это легкая часть:-). Трудная часть связана с внешними библиотеками. Нельзя полагаться на связывание одного объекта С++ 11 с внешними библиотеками, которые не были скомпилированы с помощью С++ 11 (см. http://gcc.gnu.org/wiki/Cxx11AbiCompatibility). Например, Boost, безусловно, нуждается в реорганизации (Почему не может связываться с libС++ в режиме С++ 0x, этот пример boost:: program_options?). У меня есть источник для всех внешних библиотек, которые я использую, поэтому я могу (с некоторой болью) теоретически перестроить эти библиотеки с С++ 11. Тем не менее, это все еще оставляет мне некоторые проблемы:
Разработка в смешанной среде С++ 03/С++ 11: У меня есть несколько старых проектов с использованием С++ 03, которые требуют периодического обслуживания. Конечно, я хочу связать их с существующими версиями внешних библиотек. Но для моих текущих (и новых) проектов я хочу связать с моими перестроенными версиями библиотек С++ 11. Как мне организовать среду разработки (в настоящее время Ubuntu 12.04 и Mac OS X 10.7), чтобы справиться с этим?
Я предполагаю, что эта проблема столкнется со многими разработчиками. Это не исчезнет, но я не нашел рекомендуемого и общепринятого решения.
Развертывание. В настоящее время я развертываю серверы Ubuntu 12.04 LTS в облаке. Опыт позволяет зависеть (по возможности) от стандартных пакетов (например, libboost), доступных с дистрибутивом linux. Если я переведу свой текущий проект на С++ 11, я понимаю, что мне придется создавать собственные версии внешних библиотек, которые я использую. Я предполагаю, что в какой-то момент это изменится, и их будут "стандартными" версиями пакетов библиотек с совместимостью на С++ 11. Кто-нибудь есть идеи, когда можно было ожидать, что это произойдет? Предположительно, это также потребует стандартного решения проблемы, упомянутой выше, - одновременное существование С++ 03 libs и С++ 11 libs на одной платформе.
Я надеюсь, что я пропустил что-то основное, чтобы эти воспринимаемые проблемы исчезли в нужной информации! Я слишком скоро перейду на С++ 11?
Обновление (2013-09-11): Связанное обсуждение для macports: https://lists.macosforge.org/pipermail/macports-users/2013-September/033383.html