Ответ 1
Я не знаю ни одного стандартного макроса препроцессора, но:
- Visual Studio представила поддержку в VC2010, внутренняя версия которой 1600, поэтому вы можете проверить с помощью
_MSC_VER >= 1600
- GCC поддерживает ссылки rvalue с версия 4.3, поэтому вы можете проверить эту версию вместе с
__GXX_EXPERIMENTAL_CXX0X__
- Clang определяет
__has_feature
макросы для выполнения именно того, что вам нужно:__has_feature(cxx_rvalue_references)
Таким образом, для большинства распространенных компиляторов, должно быть довольно легко совместить что-то вместе.
Я также уверен, что у Boost есть макрос для этой цели, который вы можете использовать, если ваш проект включает Boost (иначе вы могли бы посмотреть на их реализацию)