重複の可能性:
C ++ 11のサポートを確認するにはどうすればよいですか?
私は小さなライブラリを書いていますが、コンパイラがサポートするときはいつでもクラス列挙型を使用したいと思います。final
また、override
キーワードなど、他のC++11機能も使用したいと思います。
これまで、すべてのバージョンのGCCでコンパイルされるようにトリックを使用してきましたが、Windowsパーティションを起動すると、VisualStudio2010でも文句を言い始めました。これが私が使ったトリックの例です:
#if __GNUC__ == 4 && (__GNUC_MINOR__ > 7 || \
(__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ > 1))
# define TATO_OVERRIDE override
# define TATO_NO_THROW nothrow
#else
# define TATO_OVERRIDE
# define TATO_NO_THROW throw()
#endif
Visual Studioの最新バージョンは、すでに一連の新機能もサポートしていることを私は知っています。私が欲しいのは、私が使用しているコンパイラで利用できる機能を教えてくれるマクロのセットのようなものです。
#ifdef THIS_COMPILER_SUPPORTS_CLASS_ENUMS
...
#endif
これは存在しますか?それを行うライブラリはありますか?
コンパイラのドキュメント?
はっきりさせておきます。私はそれらの情報を見つける方法を知っています、私の問題は他の場所にあります。特に、同じコンパイラがそのバージョンに関して異なる機能をサポートしている可能性があるため、これらの情報を収集するために、考えられるすべてのコンパイラのドキュメントを調べたくありません。これは私がこれまでやってきたことであり、私が探しているのは実際にはそれをしない方法です。