Проверка функций библиотеки C++11

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

Что касается функций компилятора, я просто проверил версию компилятора для (IMHO )основных компиляторов(VC++ , gcc , clang на данный момент, возможно Intel)Хотя это не самый лучший и гибкий подход, я пока не знаю ничего лучше, кроме clang , у которого действительно хорошие __has_featureмакросы.

Но еще хуже обстоит дело с библиотечными функциями, которые не так жестко связаны с компилятором. На данный момент я хочу использовать тот же подход проверки версии компилятора для VC++(где это довольно просто, если использовать собственную библиотеку ).Для clang я могу по крайней мере использовать __has_includeдля крупномасштабных -запросов на основе заголовка -. Помимо этого, я думаю, проверка __GLIBCXX__значения, если оно определено, может быть хорошей идеей, но опять же я не могу найти никакой информации о том, какие конкретные версии libstdc++ представили какие функции, кроме того, что поддерживает текущая версия.

Методы должны быть сохранены для проверок препроцессора и тому подобного, так как я хочу использовать его в библиотеке заголовка -без какой-либо сложной процедуры настройки и без использования каких-либо сторонних -сторонних библиотек (и да, boost является третьей стороной -).

  1. Итак, каковы мои возможности проверки конкретных функций библиотеки C++11 в этих (довольно узких )условиях. Может быть, даже в масштабе объявляемых конкретных функций или типов?

  2. Если проверка версии компилятора или библиотеки по-прежнему является лучшим подходом, где я могу найти подробную информацию о конкретных функциях C++11, поддерживаемых конкретной версией libstdc++(и, возможно, другие важные, libc++ возможно )?

FWIW на данный момент меня интересуют функции <cstdint>, C++11 <cmath>и std::hash, но это может измениться и, вероятно, не имеет значения для общего подхода.

9
задан Chris says Reinstate Monica 9 August 2012 в 15:17
поделиться