Apple больше не продвигает GCC или libstdC++ на своей платформе, но они поставляют clang. По умолчанию при компиляции с предоставленным Apple clang в режиме C++ 11 стандартная стандартная библиотека по-прежнему остается libstdC++, которая слишком старая, чтобы нормально функционировать в режиме C++ 11.Что такое разумная минимальная версия libstdC++ для поддержки C++ 11
Я хотел бы проверить значение __GLIBCXX__ во время настройки и отказаться от попыток построить в режиме C++ 11 «слишком старый» libstdC++, например тот, который отправляет Apple. Поэтому мне нужно выбрать разумную минимальную версию.
Хотя GCC отлично справляется с перечислением поддержки функций языка в разных выпусках компилятора с this table, я не могу найти аналогичную таблицу, которая показывает библиотечные функции, поддерживаемые каждой версией libstdC++. Это затрудняет выбор разумного минимума, особенно если мой проект зависит от конкретных функций библиотеки при компиляции в режиме C++ 11.
Что такое ранний выпуск libstdC++, который предлагает некоторый значимый уровень поддержки возможностей библиотеки C++ 11? Я понимаю, что это субъективный вопрос - я больше ищу руководство от тех, кто решил этот вопрос в своих проектах. В качестве ограничений libstdC++ 4.2, очевидно, «вне» и 4.8 довольно четко «в». Где бы вы нарисовали линию, если бы вы решили это для своего проекта и почему?
Почему бы вам не использовать скрипт 'configure' (или файл' CmakeLists.txt'), чтобы проверить, какие функции вам нужны? –
Долгосрочные (например, несколько недель), да, это, безусловно, путь. В краткосрочной перспективе я хочу, чтобы пользователи не настраивали себя на очевидный провал с грубой проверкой на «достаточно недавний» libstdC++. Сейчас мне нужен большой молот, который позже будет заменен более совершенными инструментами. – acm
@JoachimPileborg У вас есть ссылка, как проверить возможности C++ 11 в CMakeLists.txt? Звучит полезно! – TemplateRex