Проверка доступности дополнений алгоритма C ++ 0x - PullRequest
3 голосов
/ 23 мая 2011

Я пытаюсь выяснить, какие из дополнений к заголовкам алгоритма поддерживаются данной реализацией (достаточно было бы gcc и MSVC).

Простой способ - сделать то же самое.как можно было бы сделать это для основных функций: проверьте версию компилятора и определите макрос, если поддерживается языковая функция.К сожалению, я не могу найти список, который показывает номера версий ни для одного из компиляторов.

Достаточно просто проверить общий макрос C ++ 0x (GXX_EXPERIMENTAL или __cplusplus) или проверить списки изменений для компиляторов и сборкимои макросы на основе этих списков?

http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

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

__cplusplus не обязательно макрос C ++ 0x, он ничего вам не говорит. GXX_EXPERIMENTAL существует с GCC 4.3, так что это тоже довольно бесполезно.

Здесь вы можете найти макросы для проверки для конкретной версии компилятора.

0 голосов
/ 24 мая 2011

Насколько я мог понять, единственное правильное решение - это иметь скрипт сборки, который пытается скомпилировать и запустить файл, который использует эту функцию и имеет утверждение во время выполнения. В зависимости от результата укажите #define CONFIG_NO_FEATURENAME или аналог в конфигурационном файле и защитите свое использование и обходной путь с помощью #ifndef.

Таким образом, можно проверить, если

  1. функция доступна
  2. функция работает правильно (в зависимости от правильности утверждения)
...