2015-05-15 3 views
4

Я обновляю проект, чтобы использовать новейший Qt и беру на себя возможность одновременно переключаться на libC++ и C++ 11. Я понимаю, что OS X 10.7 и выше поддерживают это без необходимости отправки моей собственной стандартной библиотеки. Я рад больше не поддерживать версии OS X < 10.7.Поддерживает ли OS X 10.7 libC++ поддержку C++ 14?

Поддержка C++ 11 замечательная, но я бы очень хотел использовать C++ 14.

Установил ли libC++ для конечных пользователей с OS X> 10.7 также поддержку стандартных возможностей библиотеки C++ 14?

Моя догадка есть «Да» и что она обновляется обновлениями ОС в> 10.7, но я не смог найти окончательный источник, заявив, что это так.

+2

Это интересный вопрос, поскольку поддержка C++ 14 только что была добавлена ​​в компилятор Xcode 6.3 AFAIK. Это может зависеть от того, насколько много функций предоставлено компилятором и сколько от библиотеки времени выполнения. Мне было бы интересно услышать хороший ответ здесь. – trojanfoe

+0

Да, это также зависит от того, являются ли новые стандартные дополнения библиотеки C++ 14 чисто шаблонами (т. Е. Make_unique) или есть что-то, что действительно нужно встроить в динамическую библиотеку. –

ответ

3

Наверное, нет. Apple отправила последнее обновление для Mac OS X 10.7 (10.7.5) в октябре 2012 года; маловероятно, что libC++. dylib был обновлен с тех пор (единственное исключение, о котором я мог думать, относится к проблемам безопасности)

Xcode поставляется с набором заголовков, которые изменяются с помощью какого SDK вы нацеливаете; если вы нацеливаетесь на определенную систему (скажем, 10.7), вы получаете эти заголовки.

Сравните содержимое /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/ и /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/ тоже посмотрите, что я имею в виду.

Только для шаблонов вы можете использовать свой собственный набор заголовков из более поздней версии LLVM, но тогда вы возьмете на себя ответственность за обеспечение совместимости с самим собой.

+0

Спасибо Маршалл, это имеет смысл. Особая благодарность за указание на то, что, хотя я мог использовать свои собственные заголовки с функциями только для шаблона, полученный код может не обязательно быть совместимым с установленной стандартной исполняемой библиотекой. Пока я буду придерживаться C++ 11, и я буду взвешивать стоимость/преимущества доставки моей собственной сборки стандартной библиотеки некоторое время в будущем. –

+0

Боковое примечание: в прошлом я был главным разработчиком окон, и я привык к тому, чтобы просто поставлять вместе с микропроцессором, предоставляемым во время выполнения, для распространяемой мной версии компилятора. Кажется, в мире Apple все не так просто! –

+1

Ну, если вы нацелились на 10.7 (скажем), вы получите исполняемый файл, который будет работать на 10,7 и более поздних версиях, но не сможет получить доступ к новым функциям в 10.8. –

Смежные вопросы