Вопрос по c++, c++11 – Проверка функций C ++ 11

7

Как проверить наличие отдельных особенностей языка C ++ 0x / C ++ 11? Я знаю, что у Clang есть хорошая система для этого. А как насчет GCC, Visual Studio или Boost? Я думаю, что один из способов сделать это - определить версию компилятора и связать ее с функциями, представленными в этой версии. Но это громоздко. Кто-то уже сделал это?

Прямой ответ - написать код с этой функцией и скомпилировать его. iammilind
Почему этот вопрос должен быть закрыт? Nordlöw
@ Nordl & # xF6; w: два человека проголосовали за то, чтобы закрыть его как дубликатthis question. ildjarn

Ваш Ответ

2   ответа
3

буст конфиг поставляется со скриптом для проверки некоторых, но не всех функций C ++ 11.

Он генерирует конфигурационный файл с макросами для каждой функции.

На самом деле это был остаток от черновика ответа. Я удалю это. Благодарю.
Я думаю, что вы хотели написать что-то послеSee:, Во всяком случае, да, Boost.Config, вероятно, лучшая ставка. Ребята из Boost уже отслеживают эту информацию, так что нет необходимости: они сообщают команде разработчиков о том, что она точно знает, когда она достаточно стабильна, чтобы ее рекламировать, или в случае Clang запрашивают новые флажки проверки.
3

CMake имеетtry_compile команда, которая позволяет вам проверить, будет ли пример кода скомпилироваться и установить переменную в зависимости от результата компиляции.

В данный момент я только что использовал более часто поддерживаемые функции, такие какauto типирование.

Вы можете часто использовать Boost для замены отсутствующих функций библиотеки, и это может быть лучшим вариантом на несколько лет, пока обновляются компиляторы и библиотеки и исправляются ошибки.

Список совместимости функций C ++ 11 для GCC находится здесь:http://gcc.gnu.org/projects/cxx0x.html

Обратите внимание на предупреждение:

Important: GCC's support for C++11 is still experimental. Some features were implemented based on early proposals, and no attempt will be made to maintain backward compatibility when they are updated to match the final C++11 standard.

Похожие вопросы